php 邮件“发件人”标头的问题

2022-08-30 13:15:11

我正在建立一个网站,在用户注册时向用户发送和发送电子邮件。

我的代码(它的要点):

<?php
$to = "helloworld@gmail.com";
$subject = "Test mail";
$message = "Hello! \nThis is a simple email message.";

$headers = "From: munged@gmail.com";
$headers .= "\r\nReply-To: munged@gmail.com";
$headers .= "\r\nX-Mailer: PHP/".phpversion();

mail($to,$subject,$message,$headers);

echo "Mail Sent.";
?> 

问题是,当邮件被传递时,from标头将保留,而 reply-to 将更改为指定的值。munged@box123.bluehost.com

box123.bluehost.com是托管网站的服务器的主机名。

那么我做错了什么呢?我该怎么做才能使“发件人”地址与回复地址相同?

是我做错了什么,还是网络主机在犯规?


答案 1

编辑:我刚刚注意到您正在尝试使用gmail地址作为发件人值。这是行不通的,ISP在覆盖它方面是正确的。如果要将答复重定向到传出邮件,请使用 。reply-to

适用于许多 ISP 的有效地址的解决方法:

尝试向命令中添加第五个参数:mail()

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

答案 2

事实证明,原始海报的服务器(blueHost)有一个关于这个问题的常见问题解答

第206条.


这是因为我们的服务器要求您(或您的脚本)在电子邮件标题中使用格式正确、有效的“发件人:”字段。如果“发件人:”字段的格式不正确、为空或 cPanel 中不存在电子邮件地址,则“发件人:”地址将更改为 。username@box###.bluehost.com

必须更改正在使用的脚本才能正确使用有效的From: header.

应该有效的标头示例如下:

发件人:user@domain.com
发件人:“用户”<user@domain.com>

不起作用的标头示例:

发件人:“user@domain.com”
发件人:用户 @ domain.com
发件人:user@domain.com <user@domain.com>

我们的服务器不接受电子邮件地址的名称和电子邮件地址的名称相同。它不接受电子邮件地址的双重声明。

对于Joomla和Wordpress等脚本,您需要按照其文档正确格式化发件人字段。Wordpress将需要Mail From插件。

注意:您使用的电子邮件地址必须是在 cPanel 中创建的有效帐户。


推荐