diff options
Diffstat (limited to 'program/steps/mail')
-rw-r--r-- | program/steps/mail/func.inc | 2 | ||||
-rw-r--r-- | program/steps/mail/get.inc | 19 | ||||
-rw-r--r-- | program/steps/mail/show.inc | 4 |
3 files changed, 21 insertions, 4 deletions
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index b04628fa4..0c19b661b 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -1448,7 +1448,7 @@ function rcmail_send_mdn($message, &$smtp_error) { global $RCMAIL, $IMAP; - if (!is_a($message, rcube_message)) + if (!is_object($message) || !is_a($message, rcube_message)) $message = new rcube_message($message); if ($message->headers->mdn_to && !$message->headers->mdn_sent && diff --git a/program/steps/mail/get.inc b/program/steps/mail/get.inc index 9138554f7..4eccd287e 100644 --- a/program/steps/mail/get.inc +++ b/program/steps/mail/get.inc @@ -79,10 +79,23 @@ else if ($pid = get_input_value('_part', RCUBE_INPUT_GET)) { $ctype_secondary = strtolower($part->ctype_secondary); $mimetype = sprintf('%s/%s', $ctype_primary, $ctype_secondary); + // allow post-processing of the message body + $plugin = $RCMAIL->plugins->exec_hook('message_part_get', + array('id' => $part->mime_id, 'mimetype' => $mimetype, 'part' => $part, 'download' => !empty($_GET['_download']))); + + if ($plugin['abort']) + exit; + + // overwrite modified vars from plugin + $mimetype = $plugin['mimetype']; + list($ctype_primary, $ctype_secondary) = explode('/', $mimetype); + if ($plugin['body']) + $part->body = $plugin['body']; + $browser = $RCMAIL->output->browser; // send download headers - if ($_GET['_download']) { + if ($plugin['download']) { header("Content-Type: application/octet-stream"); if ($browser->ie) header("Content-Type: application/force-download"); @@ -97,7 +110,7 @@ else if ($pid = get_input_value('_part', RCUBE_INPUT_GET)) { } // deliver part content - if ($ctype_primary == 'text' && $ctype_secondary == 'html' && empty($_GET['_download'])) { + if ($ctype_primary == 'text' && $ctype_secondary == 'html' && empty($plugin['download'])) { // get part body if not available if (!$part->body) $part->body = $MESSAGE->get_part_content($part->mime_id); @@ -119,7 +132,7 @@ else if ($pid = get_input_value('_part', RCUBE_INPUT_GET)) { else $filename = addcslashes($filename, '"'); - $disposition = !empty($_GET['_download']) ? 'attachment' : 'inline'; + $disposition = !empty($plugin['download']) ? 'attachment' : 'inline'; header("Content-Disposition: $disposition; filename=\"$filename\""); diff --git a/program/steps/mail/show.inc b/program/steps/mail/show.inc index 3c2fa238e..1472a9e61 100644 --- a/program/steps/mail/show.inc +++ b/program/steps/mail/show.inc @@ -52,6 +52,10 @@ if ($uid = get_input_value('_uid', RCUBE_INPUT_GET)) { $OUTPUT->set_env('delimiter', $IMAP->get_hierarchy_delimiter()); $OUTPUT->set_env('mailbox', $mbox_name); + // mimetypes supported by the browser (default settings) + $mimetypes = $RCMAIL->config->get('client_mimetypes', 'text/plain,text/html,text/xml,image/jpeg,image/gif,image/png,application/x-javascript,application/pdf,application/x-shockwave-flash'); + $OUTPUT->set_env('mimetypes', is_string($mimetypes) ? explode(',', $mimetypes) : (array)$mimetypes); + if ($CONFIG['trash_mbox']) $OUTPUT->set_env('trash_mailbox', $CONFIG['trash_mbox']); if ($CONFIG['flag_for_deletion']) |