浏览代码

Bypass foldLine functions for email addresses to avoid wrong folding of
very long email addresses (>76 characters)

stekkel 21 年之前
父节点
当前提交
d8688258f8
共有 1 个文件被更改,包括 15 次插入6 次删除
  1. 15 6
      class/deliver/Deliver.class.php

+ 15 - 6
class/deliver/Deliver.class.php

@@ -412,16 +412,20 @@ class Deliver {
         }
         $header[] = "Date: $date" . $rn;
         $header[] = 'Subject: '.encodeHeader($rfc822_header->subject) . $rn;
-        $header[] = 'From: '. $rfc822_header->getAddr_s('from',',',true) . $rn;
-        /* RFC2822 if from contains more then 1 address */
+        $header[] = 'From: '. $rfc822_header->getAddr_s('from',",$rn ",true) . $rn;
+
+        // folding address list [From|To|Cc|Bcc] happens by using ",$rn<space>" as delimiter
+        // Do not use foldLine for that.
+
+        // RFC2822 if from contains more then 1 address
         if (count($rfc822_header->from) > 1) {
             $header[] = 'Sender: '. $rfc822_header->getAddr_s('sender',',',true) . $rn;
         }
         if (count($rfc822_header->to)) {
-            $header[] = 'To: '. $rfc822_header->getAddr_s('to',',',true) . $rn;
+            $header[] = 'To: '. $rfc822_header->getAddr_s('to',",$rn ",true) . $rn;
         }
         if (count($rfc822_header->cc)) {
-            $header[] = 'Cc: '. $rfc822_header->getAddr_s('cc',',',true) . $rn;
+            $header[] = 'Cc: '. $rfc822_header->getAddr_s('cc',",$rn ",true) . $rn;
         }
         if (count($rfc822_header->reply_to)) {
             $header[] = 'Reply-To: '. $rfc822_header->getAddr_s('reply_to',',',true) . $rn;
@@ -429,9 +433,8 @@ class Deliver {
         /* Sendmail should return true. Default = false */
         $bcc = $this->getBcc();
         if (count($rfc822_header->bcc)) {
-            $s = 'Bcc: '. $rfc822_header->getAddr_s('bcc',',',true) . $rn;
+            $s = 'Bcc: '. $rfc822_header->getAddr_s('bcc',",$rn ",true) . $rn;
             if (!$bcc) {
-                $s = $this->foldLine($s, 78, str_pad('',4));
                 $raw_length += strlen($s);
             } else {
                 $header[] = $s;
@@ -508,6 +511,12 @@ class Deliver {
                 }
                 $hdr_s .= $sLine;
                 break;
+            case 'To':
+            case 'Cc':
+            case 'Bcc':
+            case 'From':
+                $hdr_s .= $header[$i];
+                break;
             default: $hdr_s .= $this->foldLine($header[$i], 78, str_pad('',4)); break;
             }
         }