4

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

我正在尝试测试(基于 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);
4

1 回答 1

1

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

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

于 2012-07-04T16:04:11.093 回答