1

以下标头使用 PHP 的 mail() 函数发送:

$emailheaders = "From: " . $sender . "\n";
$emailheaders .= "Return-Path: " . $sender . "\n";
$emailheaders .= "MIME-Version: 1.0\n";
$emailheaders .= "Content-type: text/html; charset=UTF-8\r\n";

mail($email, $subject, $body, $emailheaders);

它工作正常,除了Return-Path:重置为nobody@server.com,或者至少这是在查看使用上述标题接收的电子邮件的扩展标题时显示的内容。这自然意味着不会收到退回的电子邮件。

Apache 是否重置了标头,在这种情况下为什么,或者我使用mail()不正确?

我能做些什么来防止这种情况发生。使用mail()的第五个参数(例如-f sender@server.com)是不可能的,因为 PHP 处于安全模式并且提供者不会改变它。我想尽管安全模式已打开,但没有办法允许某些用户使用第五个参数。

服务器正在运行 Apache 2.2.3 和 PHP 版本 5.1.6。

4

2 回答 2

2

服务器的邮件传输代理 (MTA) 正在覆盖return-path. 例如,如果使用进出口:

return-path/etc/exim/exim.conf配置文件中设置:

return_path = sender@example.com

如果您无权访问服务器配置或mail()第五个参数,那么您可能无能为力。

于 2012-12-18T12:40:23.707 回答
0

您正在使用拆分标题,\n但根据 PHP,它应该是 \r\n (请参阅Which line break in php mail header, \r\n or \n?)。

也许这就是标头未正确发送的原因。

于 2012-12-18T12:34:26.417 回答