2012-08-03 52 views
1

在上週末,我們的MTA(POSTFIX)突然開始在我們的消息邊界上預先添加換行符。 我們有幾個定義多部分/替代消息並定義頭部的PHP模板。 這裏是PHP郵件程序格式,它在週五工作,然後在星期一突然停止。POSTFIX/sendmail突然增加額外的換行符

$headers = "From: name <[email protected]>\r\n" . 
    "Reply-To: name <[email protected]>\r\n" . 
    "MIME-Version: 1.0\r\n" . 
    "Content-Type: multipart/alternative; boundary=\"09127kjhd821\""; 

$txt = "\r\n\r\n--09127kjhd821\r\n" . 
    "Content-Type: text/plain; charset=UTF-8\r\n" . 
    "Content-Transfer-Encoding: quoted-printable\r\n\r\n" . 
    "Text Message"; 

$html = "\r\n\r\n--09127kjhd821\r\n". 
    "Content-Type: text/html; charset=UTF-8\r\n" . 
    "Content-Transfer-Encoding: base64\r\n\r\n" . 
    chunk_split(base64_encode("HTML Message")); 

$body = $txt . $html . "\r\n\r\n--09127kjhd821--"; 

mail(
    "[email protected]", 
    "=?UTF-8?B?" . base64_encode("Subject") . "?=", 
    $body, 
    $headers 
); 

比較原始郵件給破了那些我看到下面的 破碎:

Date: Fri, 3 Aug 2012 16:52:39 -0400 (EDT) 





--09127kjhd821 

Content-Type: text/plain; charset=UTF-8 

Content-Transfer-Encoding: quoted-printable 

原件(工作)

Date: Tue, 31 Jul 2012 12:36:45 -0400 (EDT) 



--09127kjhd821 
Content-Type: text/plain; charset=UTF-8 
Content-Transfer-Encoding: quoted-printable 

正如你所看到的換行符是關閉漂亮對於每個\ r和\ n來說,這個數字要翻一番,我的知識沒有任何變化會導致這種情況。

任何建議或幫助,非常感謝。

+0

第一sendmail_path固定的問題,你有沒有使用相同的郵件客戶端相同版本的同時查看這些消息? – Sammaye 2012-08-03 21:54:19

+0

我們有多個客戶抱怨。踢球者是我們的Gmail似乎很好地展現了他們,hotmail和我的手機也一樣。而其他Gmail客戶端則可以看到MIME格式。我正在使用我們的客戶收件箱中的一個來查看郵件,並與他們的服務器管理員進行了交談,以瞭解郵件是否可能由垃圾郵件過濾器後處理郵件引起,然後我們也開始接受其他人的投訴。 *編輯*我也發佈了電子郵件源文件正文,而不是客戶端解析的正文。 – fyrye 2012-08-03 21:59:11

回答

2

我唯一能想到的就是將LF轉換爲CRLF的POSTFIX和PHP問題,因此當CRLF在消息正文中定義時,邊界和頭將被轉換爲CRCRLF。 但是,保存消息源只在十六進制編輯器中顯示爲CRLF,這可能是我使用的編輯器或電子郵件客戶端下載過程中的轉換。

我還是不明白爲什麼它只是突然改變,因爲它以前工作正常。 我可以想到的唯一區別可能是由於腳本行結束可能已經從CRLF更改爲LF,導致發生轉換,從而打破正文中包含CRLF的電子郵件。

我最終通過改變php.ini中

sendmail_path="/usr/bin/dos2unix|/usr/sbin/sendmail -t -i" 
+0

我其實確定了這個問題。我們的防火牆有一個電子郵件過濾器,顯然它正在編輯郵件正文並對其進行正確格式化。所以上述問題正在被我們的防火牆的電子郵件過濾器修復。電子郵件過濾器訂閱在有問題的那一天過期,導致我們發送的所有電子郵件格式不正確。 – fyrye 2012-08-30 15:35:06