2012-07-04 46 views
4

是否可以使用PHP的郵件功能/ sendmail處理日期標題(網站服務器是linux,所以我相信它使用的是下面的sendmail)?修改PHP電子郵件中的日期標題?

我試圖測試(基於Windows)電子郵件檢查器的錯誤處理,並且需要在郵件中生成無效的日期標題,但是當我使用php郵件發送郵件時,即使我包含自定義日期標題,它似乎被郵件服務器覆蓋,並且我的自定義標題被忽略。我猜測我可能需要sendmail的一個額外參數來篡改該頭文件,但我似乎無法找到該參數是什麼,或者這是否可能。

這是我送什麼(刪除的個人域名信息)

$headers = "From: ..................\r\n"; 
$headers .= "Message-ID: <" . md5(uniqid(time())) . "@..................>\n"; 
$headers .= "MIME-Version: 1.0\n"; 
//$headers .= "Date: ".date("D, d M Y H:i:s") . " UT\n"; //a valid header for comparison 
$headers .= "Date: Tuesday\n"; // intentionally bogus email header 
$headers .= "Reply-To: ..................\n"; 
$headers .= "Return-Path: ..................\r\n"; 
$headers .= "X-Priority: 3\r\nX-MSMail-Priority: Normal\n"; 
$headers .= "X-Mailer: PHP/".phpversion()."\n"; 
$headers .= "Content-type: text/plain; charset=iso-8859-1\n"; 
$headers .= "\n"; 
$success=mail($to, $s_subject, $s_emailmsg, $headers); 
+1

您最好直接連接到SMTP端口並自行啓動電子郵件,這樣您可以完全控制過程。 –

+0

我同意馬克,當然只是一些測試,SMTP是一個相當簡單的協議,並不難與其他服務器交談。 – Wrikken

回答

1

假設你通過procmail寫道,運行電子郵件檢查,一個更簡單的方法可能是自己構建一個電子郵件消息併發送直接通過標準輸入到測試腳本。

以這種方式編寫單元測試更容易,因爲它可以繞過其他郵件服務器的任何干擾。當你確實遵循這一點時,確保第一行以MAIL FROM [email protected]開頭。

+0

不幸的是,我的電子郵件檢查器應用程序是一個Windows應用程序,所以這可能不適合我,雖然我喜歡你的策略,這聽起來像是一個有趣的方式來解決類似的問題。 –