我正在建立一个网站,当他注册时发送并发送给用户.
我的代码(它的要点):
<?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.";
?>
Run Code Online (Sandbox Code Playgroud)
问题是,当邮件传递时,从头部保持munged@box123.bluehost.com,而回复到被更改为指定的值.
box123.bluehost.com 是托管网站的服务器的主机名.
那么我做错了什么?我该怎么做才能使"发件人"地址与回复地址相同?
这是我做错了什么,还是网络主持人犯规?
Pek*_*ica 56
编辑:我刚刚注意到您正在尝试使用gmail地址作为from值.这不起作用,ISP正确地覆盖它.如果要将回复重定向到外发邮件,请使用reply-to.
适用于许多ISP的有效地址的解决方法:
尝试在mail()命令中添加第五个参数:
mail($to,$subject,$message,$headers,"-f your@email.here");
Run Code Online (Sandbox Code Playgroud)
小智 20
事实证明,原始海报的服务器(blueHost)有一个关于这个问题的常见问题解答.
第206条.
这是因为我们的服务器要求您(或您的脚本)在电子邮件的标题中使用格式正确,有效的From:字段.如果"发件人:"字段格式不正确,空白或cPanel中不存在电子邮件地址,则"发件人:"地址将更改为username@box###.bluehost.com.
您必须更改正在使用的脚本才能正确使用有效的脚本 From: header.
应该有效的标头示例如下:
来自:user@domain.com
来自:"user"<user@domain.com>
不起作用的标头示例:
来自:"user@domain.com"
来自:user @ domain.com
来自:user@domain.com <user@domain.com>
我们的服务器不接受电子邮件地址的名称和电子邮件地址相同.它不接受电子邮件地址的双重声明.
对于Joomla和Wordpress等脚本,您需要按照他们的文档正确格式化from字段.Wordpress将需要Mail From插件.
注意:您使用的电子邮件地址必须是cPanel中的有效创建帐户.
Eug*_*eph 15
我有同样的问题,我检查了php.net网站.并找到了正确的格式.
这是我更新的代码.
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: ' . $fromName . ' <' . $fromEmail .'>' . " \r\n" .
'Reply-To: '. $fromEmail . "\r\n" .
'X-Mailer: PHP/' . phpversion();
Run Code Online (Sandbox Code Playgroud)
该\ r \n应在双引号(")本身,单引号(')将无法正常工作.