diff options
author | Hugues Hiegel <root@paranoid> | 2014-08-05 16:44:07 +0200 |
---|---|---|
committer | Hugues Hiegel <root@paranoid> | 2014-08-05 16:44:07 +0200 |
commit | f91f8533678c388b879d9e999a6bcc9e22ad7e19 (patch) | |
tree | c0099e25a932399d6cd1066607a42e7fe220b977 /program/steps/mail/sendmail.inc | |
parent | ec116d33c22b371328c8557158736e3d2ee479a8 (diff) |
lot of stuff
Diffstat (limited to 'program/steps/mail/sendmail.inc')
-rw-r--r-- | program/steps/mail/sendmail.inc | 86 |
1 files changed, 30 insertions, 56 deletions
diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc index 52b02ecff..c1c257127 100644 --- a/program/steps/mail/sendmail.inc +++ b/program/steps/mail/sendmail.inc @@ -123,7 +123,7 @@ function rcmail_fix_emoticon_paths($mime_message) // sanitize image name so resulting attachment doesn't leave images dir $image_name = preg_replace('/[^a-zA-Z0-9_\.\-]/i', '', $image_name); - $img_file = INSTALL_PATH . '/' . $searchstr . $image_name; + $img_file = '/usr/share/tinymce/www/plugins/emotions/img/' . $image_name; if (! in_array($image_name, $included_images)) { // add the image to the MIME message @@ -391,6 +391,10 @@ if (!empty($mailcc)) { if (!empty($mailbcc)) { $headers['Bcc'] = $mailbcc; } +if (!empty($identity_arr['bcc']) && stripos($headers['Bcc'], $identity_arr['bcc']) === false) { + $headers['Bcc'] = ($headers['Bcc'] ? $headers['Bcc'].', ' : '') . $identity_arr['bcc']; + $RECIPIENT_COUNT ++; +} if (($max_recipients = (int) $RCMAIL->config->get('max_recipients')) > 0) { if ($RECIPIENT_COUNT > $max_recipients) { @@ -408,12 +412,18 @@ if (!empty($identity_arr['organization'])) { if (!empty($_POST['_replyto'])) { $headers['Reply-To'] = rcmail_email_input_format(get_input_value('_replyto', RCUBE_INPUT_POST, TRUE, $message_charset)); } +else if (!empty($identity_arr['reply-to'])) { + $headers['Reply-To'] = rcmail_email_input_format($identity_arr['reply-to'], false, true); +} if (!empty($headers['Reply-To'])) { $headers['Mail-Reply-To'] = $headers['Reply-To']; } if (!empty($_POST['_followupto'])) { $headers['Mail-Followup-To'] = rcmail_email_input_format(get_input_value('_followupto', RCUBE_INPUT_POST, TRUE, $message_charset)); } +if (!empty($COMPOSE['reply_msgid'])) { + $headers['In-Reply-To'] = $COMPOSE['reply_msgid']; +} // remember reply/forward UIDs in special headers if (!empty($COMPOSE['reply_uid']) && $savedraft) { @@ -423,9 +433,6 @@ else if (!empty($COMPOSE['forward_uid']) && $savedraft) { $headers['X-Draft-Info'] = array('type' => 'forward', 'uid' => $COMPOSE['forward_uid']); } -if (!empty($COMPOSE['reply_msgid'])) { - $headers['In-Reply-To'] = $COMPOSE['reply_msgid']; -} if (!empty($COMPOSE['references'])) { $headers['References'] = $COMPOSE['references']; } @@ -473,19 +480,12 @@ $isHtml = (bool) get_input_value('_is_html', RCUBE_INPUT_POST); $message_body = get_input_value('_message', RCUBE_INPUT_POST, TRUE, $message_charset); if ($isHtml) { - $bstyle = array(); - - if ($font_size = $RCMAIL->config->get('default_font_size')) { - $bstyle[] = 'font-size: ' . $font_size; - } - if ($font_family = $RCMAIL->config->get('default_font')) { - $bstyle[] = 'font-family: ' . rcmail::font_defs($font_family); - } + $font = rcube_fontdefs($RCMAIL->config->get('default_font')); + $bstyle = $font && is_string($font) ? " style='font-family: $font'" : ''; // append doctype and html/body wrappers - $message_body = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">' - . "\r\n<html><body" . (!empty($bstyle) ? " style='" . implode($bstyle, '; ') . "'" : '') . ">\r\n" - . $message_body; + $message_body = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">' . + "\r\n<html><body$bstyle>\r\n" . $message_body; } if (!$savedraft) { @@ -615,39 +615,22 @@ else { } // add stored attachments, if any -if (is_array($COMPOSE['attachments'])) { +if (is_array($COMPOSE['attachments'])) +{ foreach ($COMPOSE['attachments'] as $id => $attachment) { // This hook retrieves the attachment contents from the file storage backend $attachment = $RCMAIL->plugins->exec_hook('attachment_get', $attachment); - if ($isHtml) { - $dispurl = '/\ssrc\s*=\s*[\'"]*\S+display-attachment\S+file=rcmfile' . preg_quote($attachment['id']) . '[\s\'"]*/'; - $message_body = $MAIL_MIME->getHTMLBody(); - $is_inline = preg_match($dispurl, $message_body); - } - else { - $is_inline = false; - } - - // inline image - if ($is_inline) { - // Mail_Mime does not support many inline attachments with the same name (#1489406) - // we'll generate cid: urls here to workaround this - $cid = preg_replace('/[^0-9a-zA-Z]/', '', uniqid(time(), true)); - if (preg_match('#(@[0-9a-zA-Z\-\.]+)#', $from, $matches)) { - $cid .= $matches[1]; - } else { - $cid .= '@localhost'; - } - - $message_body = preg_replace($dispurl, ' src="cid:' . $cid . '" ', $message_body); - + $dispurl = '/\ssrc\s*=\s*[\'"]*\S+display-attachment\S+file=rcmfile' . preg_quote($attachment['id']) . '[\s\'"]*/'; + $message_body = $MAIL_MIME->getHTMLBody(); + if ($isHtml && (preg_match($dispurl, $message_body) > 0)) { + $message_body = preg_replace($dispurl, ' src="'.$attachment['name'].'" ', $message_body); $MAIL_MIME->setHTMLBody($message_body); if ($attachment['data']) - $MAIL_MIME->addHTMLImage($attachment['data'], $attachment['mimetype'], $attachment['name'], false, $cid); + $MAIL_MIME->addHTMLImage($attachment['data'], $attachment['mimetype'], $attachment['name'], false); else - $MAIL_MIME->addHTMLImage($attachment['path'], $attachment['mimetype'], $attachment['name'], true, $cid); + $MAIL_MIME->addHTMLImage($attachment['path'], $attachment['mimetype'], $attachment['name'], true); } else { $ctype = str_replace('image/pjpeg', 'image/jpeg', $attachment['mimetype']); // #1484914 @@ -776,7 +759,7 @@ if ($store_target) { if (PEAR::isError($msg)) raise_error(array('code' => 650, 'type' => 'php', - 'file' => __FILE__, 'line' => __LINE__, + 'file' => __FILE__, 'line' => __LINE__, 'message' => "Could not create message: ".$msg->getMessage()), TRUE, FALSE); else { @@ -847,24 +830,15 @@ if ($savedraft) { // start the auto-save timer again $OUTPUT->command('auto_save_start'); + + $OUTPUT->send('iframe'); } else { - $folders = array(); - - if ($COMPOSE['mode'] == 'reply' || $COMPOSE['mode'] == 'forward') - $folders[] = $COMPOSE['mailbox']; - rcmail_compose_cleanup($COMPOSE_ID); if ($store_folder && !$saved) - $OUTPUT->command('sent_successfully', 'error', rcube_label('errorsavingsent'), $folders); - else { - if ($store_folder) { - $folders[] = $store_target; - } - - $OUTPUT->command('sent_successfully', 'confirmation', rcube_label('messagesent'), $folders); - } + $OUTPUT->command('sent_successfully', 'error', rcube_label('errorsavingsent')); + else + $OUTPUT->command('sent_successfully', 'confirmation', rcube_label('messagesent'), $store_target); + $OUTPUT->send('iframe'); } - -$OUTPUT->send('iframe'); |