首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache在PHP()函数中将"Return-Path:“重置为<nobody@server.com>

Apache在PHP()函数中将"Return-Path:“重置为<nobody@server.com>
EN

Stack Overflow用户
提问于 2012-12-18 20:22:59
回答 2查看 2.2K关注 0票数 1

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

代码语言:javascript
复制
$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。

EN

回答 2

Stack Overflow用户

发布于 2012-12-18 20:40:24

服务器的邮件传输代理正在覆盖return-path。例如,如果使用Exim:

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

代码语言:javascript
复制
return_path = sender@example.com

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

票数 2
EN

Stack Overflow用户

发布于 2012-12-18 20:34:26

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

也许这就是报头不能正确发送的原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13932918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档