From: <pdo...@us...> - 2022-04-13 22:38:35
|
Revision: 14946 http://sourceforge.net/p/squirrelmail/code/14946 Author: pdontthink Date: 2022-04-13 22:38:32 +0000 (Wed, 13 Apr 2022) Log Message: ----------- Sort out DSN functionality Modified Paths: -------------- trunk/squirrelmail/class/deliver/Deliver.class.php trunk/squirrelmail/class/mime/Rfc822Header.class.php trunk/squirrelmail/src/compose.php trunk/squirrelmail/src/read_body.php Modified: trunk/squirrelmail/class/deliver/Deliver.class.php =================================================================== --- trunk/squirrelmail/class/deliver/Deliver.class.php 2022-04-13 21:38:27 UTC (rev 14945) +++ trunk/squirrelmail/class/deliver/Deliver.class.php 2022-04-13 22:38:32 UTC (rev 14946) @@ -741,6 +741,10 @@ /* RFC 2298 */ $header[] = 'Disposition-Notification-To: '.$dnt. $rn; } + if ($rfc822_header->dsn) { + $dsn = $rfc822_header->getAddr_s('dsn'); + $header[] = 'Return-Receipt-To: '.$dsn. $rn; + } if ($rfc822_header->priority) { switch($rfc822_header->priority) { Modified: trunk/squirrelmail/class/mime/Rfc822Header.class.php =================================================================== --- trunk/squirrelmail/class/mime/Rfc822Header.class.php 2022-04-13 21:38:27 UTC (rev 14945) +++ trunk/squirrelmail/class/mime/Rfc822Header.class.php 2022-04-13 22:38:32 UTC (rev 14946) @@ -122,10 +122,10 @@ */ var $dnt = ''; /** - * Delivery notification (DR) + * Address for requesting message delivery status notification (DSN) * @var mixed */ - var $drnt = ''; + var $dsn = ''; /** * @var mixed */ @@ -289,7 +289,7 @@ break; case 'return-receipt-to': $value = $this->stripComments($value); - $this->drnt = $this->parseAddress($value); + $this->dsn = $this->parseAddress($value); break; case 'mime-version': $value = $this->stripComments($value); Modified: trunk/squirrelmail/src/compose.php =================================================================== --- trunk/squirrelmail/src/compose.php 2022-04-13 21:38:27 UTC (rev 14945) +++ trunk/squirrelmail/src/compose.php 2022-04-13 22:38:32 UTC (rev 14946) @@ -946,7 +946,7 @@ // Remember the receipt settings $request_mdn = $mdn_user_support && !empty($orig_header->dnt) ? '1' : '0'; - $request_dr = $mdn_user_support && !empty($orig_header->drnt) ? '1' : '0'; + $request_dr = $mdn_user_support && !empty($orig_header->dsn) ? '1' : '0'; /* remember the references and in-reply-to headers in case of an reply */ //FIXME: it would be better to fiddle with headers inside of the message object or possibly when delivering the message to its destination (drafts folder?); is this possible? @@ -1771,10 +1771,9 @@ /* Receipt: On Delivery */ if (!empty($request_dr)) { -//FIXME: it would be better to fiddle with headers inside of the message object or possibly when delivering the message to its destination; is this possible? - $rfc822_header->more_headers['Return-Receipt-To'] = $from_addr; - } elseif (isset($rfc822_header->more_headers['Return-Receipt-To'])) { - unset($rfc822_header->more_headers['Return-Receipt-To']); + $rfc822_header->dsn = $rfc822_header->parseAddress($from_addr,true); + } elseif (isset($rfc822_header->dsn)) { + unset($rfc822_header->dsn); } /* multipart messages */ Modified: trunk/squirrelmail/src/read_body.php =================================================================== --- trunk/squirrelmail/src/read_body.php 2022-04-13 21:38:27 UTC (rev 14945) +++ trunk/squirrelmail/src/read_body.php 2022-04-13 22:38:32 UTC (rev 14946) @@ -145,7 +145,10 @@ $content_type->properties['charset']=$default_charset; } $rfc822_header->content_type = $content_type; - $rfc822_header->to[] = $header->dnt; + if (!empty($header->dnt)) + $rfc822_header->to[] = $header->dnt; + else + $rfc822_header->to[] = $header->dsn; $rfc822_header->subject = _("Read:") . ' ' . decodeHeader($header->subject,true,false); $idents = get_identities(); @@ -410,7 +413,9 @@ if ($default_use_mdn) { if ($mdn_user_support) { - if ($header->dnt) { + // We are generous to the sender because DSNs are commonly ignored by servers and + // technically offering a return receipt in the MUA for a DSN is overstepping the RFCs + if ($header->dnt || $header->dnt) { $mdn_url = $PHP_SELF; $mdn_url = set_url_var($mdn_url, 'mailbox', urlencode($mailbox)); $mdn_url = set_url_var($mdn_url, 'passed_id', $passed_id); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |