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

hd.*_*hd. 23 php email

是否可以通过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");
Run Code Online (Sandbox Code Playgroud)

GBD*_*GBD 39

您可以设置回复并将路径返回到标题,如下所示

$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'Return-Path: webmaster@example.com'
Run Code Online (Sandbox Code Playgroud)

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

mail($to, $subject, $message, $headers, "-f email@wherever.com");
Run Code Online (Sandbox Code Playgroud)

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

  • -f选项对我有用.设置Return-Path标头(正如我在到达此答案之前尝试的那样)无效,它被系统覆盖. (7认同)
  • `-f`选项有效.`$ headers`没有. (7认同)
  • 尝试在-f之后放置空格并检查."-f email@gmail.com" (4认同)
  • 我认为`\ r \n`需要双引号,而不是单引号. (4认同)
  • 就我而言,`-femail @ wherever.com`工作得很好,没有任何空间或任何东西。 (3认同)
  • 我认为设置Return-Path标头被认为是不正确的。接收MTA根据Envelope.From设置返回路径。因此,PHPMailer停止允许在消息标题中设​​置Return-Path。参见/sf/answers/87300881/ (2认同)

Rud*_*udu 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);
Run Code Online (Sandbox Code Playgroud)

顺便说一句,return-path需要一个RFC1123邮箱(没有尖括号,只有电子邮件地址)...不确定为什么要像示例中那样设置return-path,因为它与发件人地址相同(如此多余)

  • -1,因为这不能回答问题,并给出了无效的代码。您有一个随机的“ f”作为mail()的最后一个参数。有一个-f标志。仅输入`f`是一个错误。 (3认同)

小智 5

只需定义返回路径

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