CHANGELOG | ●●●●● patch | view | raw | blame | history | |
config/main.inc.php.dist | ●●●●● patch | view | raw | blame | history | |
program/localization/en_US/messages.inc | ●●●●● patch | view | raw | blame | history | |
program/steps/mail/func.inc | ●●●●● patch | view | raw | blame | history | |
program/steps/mail/sendmdn.inc | ●●●●● patch | view | raw | blame | history | |
program/steps/mail/show.inc | ●●●●● patch | view | raw | blame | history |
CHANGELOG
@@ -1,11 +1,15 @@ CHANGELOG RoundCube Webmail --------------------------- 2008/02/04 (thomasb) ---------- - Fix regular expression for checking e-mail address (#1484710) - Make sending of read receipts configurable 2008/02/02 (thomasb) ---------- - Always update $CONFIG with user prefs (#1484729) - Don't ask for MDN confirmations on drafted messages (#1484691) - 2008/01/31 (robin) - Remember search results (closes #1483883), patch by the_glu config/main.inc.php.dist
@@ -176,6 +176,10 @@ // false causes deleted messages to be permanantly removed if there is no Trash folder $rcmail_config['flag_for_deletion'] = TRUE; // Behavior if a received message requests a message delivery notification (read receipt) // 0 = ask the user, 1 = send automatically, 2 = ignore (never send or ask) $rcmail_config['mdn_requests'] = 0; // Make use of the built-in spell checker. It is based on GoogieSpell. // Since Google only accepts connections over https your PHP installatation // requires to be compiled with Open SSL support program/localization/en_US/messages.inc
@@ -74,7 +74,7 @@ $messages['sourceisreadonly'] = 'This address source is read only'; $messages['errorsavingcontact'] = 'Could not save the contact address'; $messages['movingmessage'] = 'Moving message...'; $messages['receiptsent'] = 'Successfully send the receipt message'; $messages['receiptsent'] = 'Successfully sent a read receipt'; $messages['errorsendingreceipt'] = 'Could not send the receipt'; ?> program/steps/mail/func.inc
@@ -1318,6 +1318,78 @@ } function rcmail_send_mdn($uid) { global $CONFIG, $USER, $IMAP; $message = array('UID' => $uid); $message['headers'] = $IMAP->get_headers($message['UID']); $message['subject'] = rcube_imap::decode_mime_string($message['headers']->subject, $message['headers']->charset); if ($message['headers']->mdn_to && !$message['headers']->mdn_sent) { $identity = $USER->get_identity(); $sender = format_email_recipient($identity['email'], $identity['name']); $recipient = array_shift($IMAP->decode_address_list($message['headers']->mdn_to)); $mailto = $recipient['mailto']; $compose = new rc_mail_mime(rcmail_header_delm()); $compose->setParam(array( 'text_encoding' => 'quoted-printable', 'html_encoding' => 'quoted-printable', 'head_encoding' => 'quoted-printable', 'head_charset' => RCMAIL_CHARSET, 'html_charset' => RCMAIL_CHARSET, 'text_charset' => RCMAIL_CHARSET, )); // compose headers array $headers = array( 'Date' => date('r'), 'From' => $sender, 'To' => $message['headers']->mdn_to, 'Subject' => rcube_label('receiptread') . ': ' . $message['subject'], 'Message-ID' => sprintf('<%s@%s>', md5(uniqid('rcmail'.rand(),true)), rcmail_mail_domain($_SESSION['imap_host'])), 'X-Sender' => $identity['email'], 'Content-Type' => 'multipart/report; report-type=disposition-notification', ); if (!empty($CONFIG['useragent'])) $headers['User-Agent'] = $CONFIG['useragent']; $body = rcube_label("yourmessage") . "\r\n\r\n" . "\t" . rcube_label("to") . ': ' . rcube_imap::decode_mime_string($message['headers']->to, $message['headers']->charset) . "\r\n" . "\t" . rcube_label("subject") . ': ' . $message['subject'] . "\r\n" . "\t" . rcube_label("sent") . ': ' . format_date(strtotime($message['headers']->date), $CONFIG['date_long']) . "\r\n" . "\r\n" . rcube_label("receiptnote") . "\r\n"; $ua = !empty($CONFIG['useragent']) ? $CONFIG['useragent'] : "RoundCube Webmail (Version ".RCMAIL_VERSION.")"; $report = "Reporting-UA: $ua\r\n"; if ($message['headers']->to) $report .= "Original-Recipient: {$message['headers']->to}\r\n"; $report .= "Final-Recipient: rfc822; {$identity['email']}\r\n" . "Original-Message-ID: {$message['headers']->messageID}\r\n" . "Disposition: manual-action/MDN-sent-manually; displayed\r\n"; $compose->headers($headers, true); $compose->setTXTBody($body); $compose->addAttachment($report, 'message/disposition-notification', 'MDNPart2.txt', false, '7bit', 'inline'); $sent = rcmail_deliver_message($compose, $identity['email'], $mailto); if ($sent) { $IMAP->set_flag($message['UID'], 'MDNSENT'); return true; } } return false; } // register UI objects $OUTPUT->add_handlers(array( 'mailboxlist' => 'rcmail_mailbox_list', program/steps/mail/sendmdn.inc
@@ -5,7 +5,7 @@ | program/steps/mail/sendmdn.inc | | | | This file is part of the RoundCube Webmail client | | Copyright (C) 2007, RoundCube Dev. - Switzerland | | Copyright (C) 2008, RoundCube Dev. - Switzerland | | Licensed under the GNU GPL | | | | PURPOSE: | @@ -22,76 +22,19 @@ require_once('lib/rc_mail_mime.inc'); if (!empty($_POST['_uid'])) { $MESSAGE = array('UID' => get_input_value('_uid', RCUBE_INPUT_POST)); $MESSAGE['headers'] = $IMAP->get_headers($MESSAGE['UID']); $MESSAGE['subject'] = rcube_imap::decode_mime_string($MESSAGE['headers']->subject, $MESSAGE['headers']->charset); if ($MESSAGE['headers']->mdn_to && !$MESSAGE['headers']->mdn_sent) { $identity = $USER->get_identity(); $sender = format_email_recipient($identity['email'], $identity['name']); $recipient = array_shift($IMAP->decode_address_list($MESSAGE['headers']->mdn_to)); $mailto = $recipient['mailto']; $COMPOSE = new rc_mail_mime(rcmail_header_delm()); $COMPOSE->setParam(array( 'text_encoding' => 'quoted-printable', 'html_encoding' => 'quoted-printable', 'head_encoding' => 'quoted-printable', 'head_charset' => RCMAIL_CHARSET, 'html_charset' => RCMAIL_CHARSET, 'text_charset' => RCMAIL_CHARSET, )); // compose headers array $headers = array( 'Date' => date('r'), 'From' => $sender, 'To' => $MESSAGE['headers']->mdn_to, 'Subject' => rcube_label('receiptread') . ': ' . $MESSAGE['subject'], 'Message-ID' => sprintf('<%s@%s>', md5(uniqid('rcmail'.rand(),true)), rcmail_mail_domain($_SESSION['imap_host'])), 'X-Sender' => $identity['email'], 'Content-Type' => 'multipart/report; report-type=disposition-notification', ); if (!empty($CONFIG['useragent'])) $headers['User-Agent'] = $CONFIG['useragent']; $body = rcube_label("yourmessage") . "\r\n\r\n" . "\t" . rcube_label("to") . ': ' . rcube_imap::decode_mime_string($MESSAGE['headers']->to, $MESSAGE['headers']->charset) . "\r\n" . "\t" . rcube_label("subject") . ': ' . $MESSAGE['subject'] . "\r\n" . "\t" . rcube_label("sent") . ': ' . format_date(strtotime($MESSAGE['headers']->date), $CONFIG['date_long']) . "\r\n" . "\r\n" . rcube_label("receiptnote") . "\r\n"; $report = "Reporting-UA: RoundCube Webmail (Version ".RCMAIL_VERSION.")\r\n"; if ($MESSAGE['headers']->to) $report .= "Original-Recipient: {$MESSAGE['headers']->to}\r\n"; $report .= "Final-Recipient: rfc822; {$identity['email']}\r\n" . "Original-Message-ID: {$MESSAGE['headers']->messageID}\r\n" . "Disposition: manual-action/MDN-sent-manually; displayed\r\n"; $COMPOSE->headers($headers, true); $COMPOSE->setTXTBody($body); $COMPOSE->addAttachment($report, 'message/disposition-notification', 'MDNPart2.txt', false, '7bit', 'inline'); $sent = rcmail_deliver_message($COMPOSE, $identity['email'], $mailto); if ($sent) { $IMAP->set_flag($MESSAGE['UID'], 'MDNSENT'); $OUTPUT->set_env('mdn_request', false); $OUTPUT->show_message('receiptsent', 'confirmation'); $OUTPUT->send(); } } if (!empty($_POST['_uid'])) { $sent = rcmail_send_mdn(get_input_value('_uid', RCUBE_INPUT_POST)); } // Error if arrive here $OUTPUT->show_message('errorsendingreceipt', 'error'); // show either confirm or error message if ($sent) { $OUTPUT->set_env('mdn_request', false); $OUTPUT->show_message('receiptsent', 'confirmation'); } else { $OUTPUT->show_message('errorsendingreceipt', 'error'); } $OUTPUT->send(); ?> program/steps/mail/show.inc
@@ -5,7 +5,7 @@ | program/steps/mail/show.inc | | | | This file is part of the RoundCube Webmail client | | Copyright (C) 2005-2007, RoundCube Dev. - Switzerland | | Copyright (C) 2005-2008, RoundCube Dev. - Switzerland | | Licensed under the GNU GPL | | | | PURPOSE: | @@ -20,6 +20,7 @@ */ require_once('Mail/mimeDecode.php'); require_once('lib/rc_mail_mime.inc'); $PRINT_MODE = $_action=='print' ? TRUE : FALSE; @@ -76,8 +77,16 @@ // check for unset disposition notification if ($MESSAGE['headers']->mdn_to && !$MESSAGE['headers']->mdn_sent && $IMAP->get_mailbox_name() != $CONFIG['drafts_mbox']) { rcube_add_label('mdnrequest'); $OUTPUT->set_env('mdn_request', true); if (intval($CONFIG['mdn_requests']) === 1) { if (rcmail_send_mdn($MESSAGE['UID'])) $OUTPUT->show_message('receiptsent', 'confirmation'); } else if (empty($CONFIG['mdn_requests'])) { rcube_add_label('mdnrequest'); $OUTPUT->set_env('mdn_request', true); } }