为什么它不回到我的回归路径?

时间:2009-06-22 09:25:44

标签: php email bounce

我使用的是php,使用邮件功能:

$headers =  'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: admin@domain.com' . "\r\n";
$headers .= 'Reply-To: Admin <admin@domain.com>' . "\r\n";

// Return Path - 
$return_path = "bounce@domain.com";

$toUser... (all necessary variables)

if(mail($toUser,$subject,$body,$headers, "-f".$return_path)){
    echo "res=sent";
} else {
    echo "res=error";
    }

我测试的电子邮件很少,如abXXX@kasbkjasbdka.com,8hgb87@9ndksjc9ne.com

(等等,所有无效的,不存在的电子邮件地址)

为什么不去我的bounce@domain.com ????

3 个答案:

答案 0 :(得分:1)

您还应该能够在大多数服务器上使用标头设置Return-Path:

$headers .= "Return-Path: bounce@domain.com\r\n";

答案 1 :(得分:0)

您需要在-f之后添加空格。另外,为什么不使用UTF-8而不是iso-8859-1?试试这个:

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
$headers .= 'From: admin@domain.com' . "\r\n";
$headers .= 'Reply-To: Admin <admin@domain.com>' . "\r\n";

// Return Path
$return_path = 'bounce@domain.com';

/*
$toUser... (all necessary variables)
*/

if(mail($toUser, $subject, $body, $headers, '-f ' . $return_path)) {
 echo 'res=sent';
} else {
 echo 'res=error';
}

答案 2 :(得分:0)

可能是由sendmail的配置引起的。 -F 参数作为命令行属性传递,因此需要配置sendmail以支持它。

来自php.net

  

additional___parameters参数   可用于传递其他标志   作为程序的命令行选项   配置为在发送时使用   邮件,由sendmail_path定义   配置设置。例如,   这可以用来设置信封   使用sendmail时的发件人地址   使用-f sendmail选项。

修改:我刚看到Matthias Bynens'答案是正确的,请参阅this entry