我在表单上使用PHP的mail()函数将电子邮件发送到具有自动响应的地址。不幸的是,由于电子邮件是从表单生成的,因此它会尝试回复www.domain.com@web.pas.earthlink.net,该网站不存在,然后反弹。
mail("info@domain.com", $email_subject, $email_message, $headers);
其他信息:
$email_from = "forms@domain.com";
$headers = "From: ".$email_from;
$headers .= "\nReply-To: ".$email_from;
$headers .= "\nReturn-Path: ".$email_from;
$headers .= "\nMIME-Version: 1.0\n" .
"Content-Type: multipart/mixed;\n" .
" boundary=\"{$mime_boundary}\"";
有什么方法可以解决这个问题吗?如何设置正确的退货地址?
编辑:我应该说当响应到达时,回复地址IS正确设置为$ email_from。无论如何,自动应答器仍然尝试将其发送到www.domain.com@web.pas.earthlink.net。
答案 0 :(得分:1)
Return-Path与其他邮件标题不同。这是一个所谓的“信封标题”。这些是由MTA设置的,而不是由实际邮件的标题部分中的字段设置的。大多数MTA都有一个用于设置Return-Path的特殊标志。在Postfix,Sendmail和Exim中,它是f
标志,因此在这些系统上,您通常可以像这样调用mail
:
mail($to, $subject, $message, $additional_headers, '-f'.$email_from);
答案 1 :(得分:1)
您可以使用fifth parameter设置Return-Path
(如果这就是您的意思):
bool mail(字符串$ to,string $ subject,string $ message [,string $ additional_headers [,string $ additional_parameters]])
......其中:
additional_parameters(可选)
additional_parameters参数可用于传递 其他标志作为命令行 配置为的程序的选项 按照定义发送邮件时使用 通过sendmail_path配置 设置。例如,可以使用它 设置信封发件人地址 使用sendmail时使用-f sendmail选项。
应将Web服务器运行的用户添加为受信任的用户 到sendmail配置 阻止'X-Warning'标题 当被添加到消息中时 信封发件人(-f)是使用此设置的 方法。对于sendmail用户,此文件 是/ etc / mail / trusted-users。
将其设置为-finfo@domain.com
应该可以解决问题。
在任何情况下,我都认为自动回复应该使用From
标题中的地址(如果没有提供Reply-To
),但是,哦......:)