PHP mail()函数自动响应

时间:2011-05-18 17:59:06

标签: php email forms

我在表单上使用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。

2 个答案:

答案 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),但是,哦......:)