【问题标题】:Modify date header in PHP email?修改PHP电子邮件中的日期标题?
【发布时间】:2012-07-05 03:28:28
【问题描述】:

是否可以使用 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);

【问题讨论】:

  • 您最好直接连接到 SMTP 端口并自己发起电子邮件,让您完全控制整个过程。
  • 我同意 Marc 的观点,当然对于一些测试而言,SMTP 是一个相当简单的协议,与另一台服务器通信并不难。

标签: php email sendmail


【解决方案1】:

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

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

【讨论】:

  • 不幸的是,我的电子邮件检查器应用程序是一个 Windows 应用程序,所以这可能对我不起作用,尽管我喜欢你的策略,而且这听起来是解决类似问题的有趣方法。跨度>
猜你喜欢
  • 1970-01-01
  • 2019-04-28
  • 2012-03-20
  • 2014-11-27
  • 2014-10-07
  • 2016-09-29
  • 2018-10-29
  • 1970-01-01
  • 2017-11-01
相关资源
最近更新 更多