更改PHP邮件功能中的Return-Path

时间:2012-09-16 10:06:33

标签: email php

是否可以通过PHP的mail()函数发送电子邮件中的Return-Path值?

我在我的网站上发送的电子邮件中的值是'www-data@mydomain.com',这会导致电子邮件传递失败过程中的一些问题。我想将其设置为我的电子邮件地址。

这是我尝试过的代码:

$headers = 'MIME-Version: 1.0' . "\n";
$headers .= "Content-type: text/html; charset=utf-8" . "\n";
$headers .= "Return-Path: <adminemail@yahoo.com>"."\n";
$headers .= "Errors-To: <adminemail@yahoo.com>"."\n";
// Additional headers
$headers .= "To: email1@yahoo.com <adminemail@yahoo.com>" . "\n";
$headers .= "From: adminemail@yahoo.com <adminemail@yahoo.com>";
// Mail it
mail('email1@yahoo.com', 'test', 'salam', $headers, "f");

3 个答案:

答案 0 :(得分:37)

您可以设置回复&amp;将路径返回到标题中,如下所示

$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'Return-Path: webmaster@example.com'

OR 作为调整返回路径的第五个参数

mail($to, $subject, $message, $headers, "-f email@wherever.com");

其中email@wherever.com应由您的邮件替换。

答案 1 :(得分:5)

问题是邮件格式要求标题使用\r\n行结尾...而不是\n,其中的诀窍是一些服务器会同时接受它们(为它们转换它们似乎神奇地工作) )而其他人会认为那些没有\r\n结尾的人无效,基本上会忽略你的所有标题。所以请尝试:

$headers = "MIME-Version: 1.0\r\n".
   "Content-type: text/html; charset=utf-8\r\n".
   "Return-Path: adminemail@yahoo.com";
mail ("email1@yahoo.com","test","salam",$headers);

顺便说一句,return-path需要一个RFC1123邮箱(没有尖括号,只有电子邮件地址)...不确定为什么你要设置如你的例子中的return-path,因为它与来自地址(如此多余)

答案 2 :(得分:0)

只需定义返回路径

$returnPath = "-fadminemail@yahoo.com"; //-f will do the job
mail('email1@yahoo.com', 'test', 'salam', $headers, $returnPath);