以下报头使用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。
发布于 2012-12-18 20:40:24
服务器的邮件传输代理正在覆盖return-path。例如,如果使用Exim:
在/etc/exim/exim.conf配置文件中设置return-path:
return_path = sender@example.com如果您没有访问服务器配置或mail()第五个参数的权限,那么您可能无能为力。
发布于 2012-12-18 20:34:26
您正在使用\n拆分标头,但根据PHP,它应该是\r\n (参见Which line break in php mail header, \r\n or \n?)。
也许这就是报头不能正确发送的原因。
https://stackoverflow.com/questions/13932918
复制相似问题