Ubuntu
Php mail() 標頭無法與 Postfix 一起正常工作
我執行 Ubuntu 10.04 並安裝了一個帶有“衛星”後綴的 LAMP 堆棧(用作我的 ISP 的 smtp 的中繼)。
在 php.ini 中,我將 sendmail 傳遞保持為預設值,因此帶有
-t -i
參數:;sendmail_path =
我發送這樣的電子郵件:
$headers = 'From: info@mydomain.com' . "\r\n"; $headers .= 'Reply-To: info@mydomain.com' . "\r\n"; $headers .= 'Return-Path: info@mydomain.com'; mail('recipient@mydomain.com', 'Email title', 'Text of the body.', $headers);
收到的電子郵件在正文中有這個(它應該在標題中):
Reply-To: info@mydomain.com Message-Id: <20111027210218.6F32440DE7@mydomain.com> Date: Thu, 27 Oct 2011 23:02:18 +0200 (CEST)
我們怎樣才能解決這個問題?
**注意:**電子郵件在其他安裝上正常工作:Gentoo 與 qmail 或 Windows 與 smtp 設置為我在 php.ini 中的 isp。
這是完整的標題:
Return-Path: <www-data@mydomain.com> Delivered-To: info@mydomain.com Received: (qmail 28922 invoked from network); 27 Oct 2011 23:00:55 +0200 Received: from zhhdzmsp-mail12.myisp.com (1.2.3.5) by www.mydomain.com with SMTP; 27 Oct 2011 23:00:55 +0200 Return-Path: <www-data@mydomain.com> X-FXIT-IP: IPv4[1.2.3.4] Epoch[1319888334] Received: from [1.2.3.4] ([1.2.3.4:17957] helo=dev.mydomain.com) by zhhdzmsp-mail12.myisp.com (envelope-from <www-data@mydomain.com>) (ecelerity 2.2.3.46 r()) with ESMTP id 6E/C0-28209-6D6C9AE4; Thu, 27 Oct 2011 21:02:14 +0000 Received: by dev.mydomain.com (Postfix, from userid 33) id 6F32440DE7; Thu, 27 Oct 2011 23:02:18 +0200 (CEST) To: info@mydomain.com Subject: Email Title X-PHP-Originating-Script: 1000:helpdesk.php From: toto@gmail.com
Postfix 將“換行”(\n) 翻譯成“輸入換行”(\r\n)。嘗試刪除 \r 並僅使用 \n。
您的陳述和標題不匹配。可能只是一個複制和粘貼錯誤,但卻是一個糟糕的診斷起點。
然後,標題中有兩條 Return-Path 行,正文中有一條。這很奇怪,表明存在更大的問題。
總體問題是您正試圖確定通過四個(!)電子郵件伺服器的郵件標題的問題。然後你將其中一個歸咎於罪魁禍首。但它可以是其中任何一個。或者最明顯的是,這五個郵件伺服器中的任何一個都不會修改標題或正文,除非它們被 RFC 5321 告知或要求。因此,如果您想分析問題,您必須首先查看郵件是如何到達的伺服器,而不是即將到來的伺服器。