From: <jan...@us...> - 2007-10-31 03:38:23
|
Revision: 12749 http://squirrelmail.svn.sourceforge.net/squirrelmail/?rev=12749&view=rev Author: jangliss Date: 2007-10-30 20:38:19 -0700 (Tue, 30 Oct 2007) Log Message: ----------- Paul resolved issue with In-Reply-To and References headers not being retained on reply (#1810659). Minor adjustment to patch to fix an undefined var issue. Additional fix for missing variable in Message class. Modified Paths: -------------- branches/SM-1_4-STABLE/squirrelmail/ChangeLog branches/SM-1_4-STABLE/squirrelmail/class/deliver/Deliver.class.php branches/SM-1_4-STABLE/squirrelmail/class/mime/Message.class.php branches/SM-1_4-STABLE/squirrelmail/src/compose.php Modified: branches/SM-1_4-STABLE/squirrelmail/ChangeLog =================================================================== --- branches/SM-1_4-STABLE/squirrelmail/ChangeLog 2007-10-31 00:28:26 UTC (rev 12748) +++ branches/SM-1_4-STABLE/squirrelmail/ChangeLog 2007-10-31 03:38:19 UTC (rev 12749) @@ -16,6 +16,8 @@ "not defined" error on session timeouts. - Fixed outgoing messages to allow addresses such as "0@..." or "000@...", etc. (#1818398). + - Fixed issue with in-reply-to and reference headers not being retained on + reply (#1810659). Version 1.4.11 - 29 September 2007 Modified: branches/SM-1_4-STABLE/squirrelmail/class/deliver/Deliver.class.php =================================================================== --- branches/SM-1_4-STABLE/squirrelmail/class/deliver/Deliver.class.php 2007-10-31 00:28:26 UTC (rev 12748) +++ branches/SM-1_4-STABLE/squirrelmail/class/deliver/Deliver.class.php 2007-10-31 03:38:19 UTC (rev 12749) @@ -31,12 +31,21 @@ /** * function mail - send the message parts to the SMTP stream * - * @param Message $message Message class to send - * @param resource $stream file handle to the SMTP stream + * @param Message $message Message object to send + * @param resource $stream Handle to the SMTP stream + * @param string $reply_id Identifies message being replied to + * (OPTIONAL; caller should ONLY specify + * a value for this when the message + * being sent is a reply) + * @param string $reply_ent_id Identifies message being replied to + * in the case it was an embedded/attached + * message inside another (OPTIONAL; caller + * should ONLY specify a value for this + * when the message being sent is a reply) * * @return integer $raw_length */ - function mail($message, $stream=false) { + function mail($message, $stream=false, $reply_id=0, $reply_ent_id=0) { $rfc822_header = $message->rfc822_header; if (count($message->entities)) { $boundary = $this->mimeBoundary(); @@ -45,6 +54,37 @@ $boundary=''; } $raw_length = 0; + + + // calculate reply header if needed + // + if ($reply_id) { + global $imapConnection, $username, $key, $imapServerAddress, + $imapPort, $mailbox; + if (!$imapConnection) + $imapConnection = sqimap_login($username, $key, + $imapServerAddress, $imapPort, 0); + + sqimap_mailbox_select($imapConnection, $mailbox); + $reply_message = sqimap_get_message($imapConnection, $reply_id, $mailbox); + + if ($reply_ent_id) { + /* redefine the messsage in case of message/rfc822 */ + $reply_message = $message->getEntity($reply_ent_id); + /* message is an entity which contains the envelope and type0=message + * and type1=rfc822. The actual entities are childs from + * $reply_message->entities[0]. That's where the encoding and is located + */ + + $orig_header = $reply_message->rfc822_header; /* here is the envelope located */ + + } else { + $orig_header = $reply_message->rfc822_header; + } + $message->reply_rfc822_header = $orig_header; + } + + $reply_rfc822_header = (isset($message->reply_rfc822_header) ? $message->reply_rfc822_header : ''); $header = $this->prepareRFC822_Header($rfc822_header, $reply_rfc822_header, $raw_length); Modified: branches/SM-1_4-STABLE/squirrelmail/class/mime/Message.class.php =================================================================== --- branches/SM-1_4-STABLE/squirrelmail/class/mime/Message.class.php 2007-10-31 00:28:26 UTC (rev 12748) +++ branches/SM-1_4-STABLE/squirrelmail/class/mime/Message.class.php 2007-10-31 03:38:19 UTC (rev 12749) @@ -31,6 +31,11 @@ */ var $rfc822_header = ''; /** + * Headers from original email in reply + * @var string + */ + var $reply_rfc822_header = ''; + /** * MessageHeader object * @var object */ Modified: branches/SM-1_4-STABLE/squirrelmail/src/compose.php =================================================================== --- branches/SM-1_4-STABLE/squirrelmail/src/compose.php 2007-10-31 00:28:26 UTC (rev 12748) +++ branches/SM-1_4-STABLE/squirrelmail/src/compose.php 2007-10-31 03:38:19 UTC (rev 12749) @@ -1531,6 +1531,14 @@ $rfc822_header->content_type = $content_type; $composeMessage->rfc822_header = $rfc822_header; + if ($action == 'reply' || $action == 'reply_all') { + global $passed_id, $passed_ent_id; + $reply_id = $passed_id; + $reply_ent_id = $passed_ent_id; + } else { + $reply_id = ''; + $reply_ent_id = ''; + } /* Here you can modify the message structure just before we hand it over to deliver */ @@ -1575,9 +1583,9 @@ if (sqimap_mailbox_exists ($imap_stream, $draft_folder)) { require_once(SM_PATH . 'class/deliver/Deliver_IMAP.class.php'); $imap_deliver = new Deliver_IMAP(); - $length = $imap_deliver->mail($composeMessage); + $length = $imap_deliver->mail($composeMessage, 0, $reply_id, $reply_ent_id); sqimap_append ($imap_stream, $draft_folder, $length); - $imap_deliver->mail($composeMessage, $imap_stream); + $imap_deliver->mail($composeMessage, $imap_stream, $reply_id, $reply_ent_id); sqimap_append_done ($imap_stream, $draft_folder); sqimap_logout($imap_stream); unset ($imap_deliver); @@ -1592,7 +1600,7 @@ } $succes = false; if ($stream) { - $length = $deliver->mail($composeMessage, $stream); + $length = $deliver->mail($composeMessage, $stream, $reply_id, $reply_ent_id); $succes = $deliver->finalizeStream($stream); } if (!$succes) { @@ -1630,7 +1638,7 @@ sqimap_append ($imap_stream, $sent_folder, $length); require_once(SM_PATH . 'class/deliver/Deliver_IMAP.class.php'); $imap_deliver = new Deliver_IMAP(); - $imap_deliver->mail($composeMessage, $imap_stream); + $imap_deliver->mail($composeMessage, $imap_stream, $reply_id, $reply_ent_id); sqimap_append_done ($imap_stream, $sent_folder); unset ($imap_deliver); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |