我认为 serverfault 可能更适合这个问题。我正在尝试使用 PHP mail() 函数发送电子邮件。PHP 没有返回任何错误,并且表示无论是否发送,电子邮件都已被接受。
这是一个关联回答我在 stackexchange 上的原始问题。
我的 Web 服务器通过 SMTP 连接到我们的本地 Exchange 服务器。我应该检查哪些日志来查找邮件未送达的错误?我可以通过其他方式连接到 Exchange 来发送电子邮件吗?
任何帮助,将不胜感激。
答案1
据我所知(很高兴得到纠正),PHP 的 mail() 函数不会自动生成message-id
标题行。如果这增加了邮件被标记为垃圾邮件(因此被接受但未送达邮箱)或被视为重复邮件(被接受但被抑制)的可能性,我不会感到惊讶。类似这样的情况似乎是邮件未到达本地邮箱的最可能解释。
你可以使用如下代码添加 message-id 标头
$headers .= "message-id: <".$now.".".$rand."@".$hostname.">\r\n";
您本地 Exchange 服务的管理员应该知道日志在哪里 - 消息跟踪日志可能就足够了。