php邮件问题'来自'标题

时间:2010-01-06 15:41:26

标签: php email smtp

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

我的代码(它的要点):

<?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标头仍为munged@box123.bluehost.com,而回复更改为指定值。

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

那么我做错了什么?如何让“发件人”地址与回复地址相同?

这是我做错了什么,还是网络主持人犯规?

8 个答案:

答案 0 :(得分:56)

编辑:我刚刚注意到您正在尝试使用gmail地址作为from值。 这不起作用,ISP正确覆盖它。如果要将回复重定向到外发邮件,请使用reply-to

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

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

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

答案 1 :(得分:20)

事实证明,原始海报的服务器(blueHost)有a FAQ concerning this very question

第206条。


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

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

应该起作用的标题示例如下:

  

发件人:user@domain.com
  来自:“user”&lt; user@domain.com>

不起作用的标题示例:

  

来自:“user@domain.com”
  来自:user @ domain.com
  来自:user@domain.com&lt; user@domain.com>

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

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

  

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

答案 2 :(得分:13)

我有同样的问题,我检查了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();

\ r \ n 应该在双引号(&#34;)本身,单引号(&#39;)不行。

答案 3 :(得分:4)

为了防止网上诱骗,某些邮件服务器会阻止重写。

答案 4 :(得分:1)

我意识到这是一个老线程,但是自从我昨天搬到bluehost后我遇到了同样的问题。它可能不是选定的答案,但我支持bluehost文章206回复。

我在控制台中创建了一个有效的电子邮件,并将其用作我的发件人地址,但它确实有效。

答案 5 :(得分:1)

我通过在Cpanel中添加电子邮件帐户并将相同的电子邮件添加到此字段中的标题来解决此问题

$header = 'From: XXXXXXXX <test@test.org>' . "\r\n";

答案 6 :(得分:0)

网络主持人并没有真正犯规。它不是严格按照规则 - 但与一些旨在防止垃圾邮件的惊人发明相比,它并不是特别糟糕的。

如果你真的想从'@gmail.com'发送邮件,为什么不直接使用gmail SMTP服务呢?如果您无法重新配置运行PHP的服务器,那么有很多电子邮件包装工具允许您指定自定义SMTP中继phpmailer。

下进行。

答案 7 :(得分:0)

标题在我的共享主机上对我不起作用,原因是我在标题中使用了我的Hotmail电子邮件地址。 我在我的cpanel上创建了一封电子邮件,我在标题中设置了相同的电子邮件,因为它像魅力一样!

 $header = 'From: ShopFive <site@mysite.org>' . "\r\n";