| | |
| | | +-----------------------------------------------------------------------+ |
| | | | program/steps/mail/sendmdn.inc | |
| | | | | |
| | | | This file is part of the RoundCube Webmail client | |
| | | | Copyright (C) 2007, RoundCube Dev. - Switzerland | |
| | | | Licensed under the GNU GPL | |
| | | | This file is part of the Roundcube Webmail client | |
| | | | Copyright (C) 2008-2009, The Roundcube Dev Team | |
| | | | | |
| | | | Licensed under the GNU General Public License version 3 or | |
| | | | any later version with exceptions for skins & plugins. | |
| | | | See the README file for a full license statement. | |
| | | | | |
| | | | PURPOSE: | |
| | | | Send a message disposition notification for a specific mail | |
| | |
| | | +-----------------------------------------------------------------------+ |
| | | | Author: Thomas Bruederli <roundcube@gmail.com> | |
| | | +-----------------------------------------------------------------------+ |
| | | |
| | | $Id: sendmail.inc 930 2007-11-25 17:34:19Z thomasb $ |
| | | |
| | | */ |
| | | |
| | | require_once('lib/rc_mail_mime.inc'); |
| | | // only process ajax requests |
| | | if (!$OUTPUT->ajax_call) |
| | | return; |
| | | |
| | | |
| | | 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), $smtp_error); |
| | | } |
| | | |
| | | // Error if arrive here |
| | | $OUTPUT->show_message('errorsendingreceipt', 'error'); |
| | | $OUTPUT->send(); |
| | | // show either confirm or error message |
| | | if ($sent) { |
| | | $OUTPUT->set_env('mdn_request', false); |
| | | $OUTPUT->show_message('receiptsent', 'confirmation'); |
| | | } |
| | | else if ($smtp_error) { |
| | | $OUTPUT->show_message($smtp_error['label'], 'error', $smtp_error['vars']); |
| | | } |
| | | else { |
| | | $OUTPUT->show_message('errorsendingreceipt', 'error'); |
| | | } |
| | | |
| | | ?> |
| | | $OUTPUT->send(); |