修改 PHP 电子邮件中的日期标题


Modify date header in PHP email?

是否可以使用 PHP 的邮件函数/sendmail(网站服务器是 linux,所以我相信它在下面使用 sendmail)来操作日期标头?

我正在尝试测试(基于 Windows)电子邮件检查器的错误处理,并且需要在邮件中生成无效的日期标头,但是当我使用 php mail 发送邮件时,即使我包含一个自定义日期标头,它似乎被邮件服务器覆盖并且我的自定义标头被忽略。我猜我可能需要一个额外的参数让 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);

假设您编写了一个通过 procmail 运行的电子邮件检查器,一种更简单的方法可能是自己构造电子邮件并通过标准输入将其直接发送到测试脚本。

以这种方式编写单元测试更容易,因为它绕过了其他邮件服务器的任何干扰。执行此操作时,请确保第一行以 MAIL FROM xx@yy.com 开头。