PHP mail()仅适用于某些域

时间:2013-06-18 13:39:48

标签: php email

我正在尝试使用此代码发送带有PHP的电子邮件

$headers = "From: " . "from@myself.com" . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=utf-8\r\n";

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

其中$to是有效的电子邮件地址,$content是html模板的内容。

@gmail和@hotmail地址都能正确接收电子邮件。 @ virgilio.it地址没有收到它们:是什么导致这个?有些域正在接受和显示来自我服务器的电子邮件:其他域则没有。这是为什么?

3 个答案:

答案 0 :(得分:1)

php mail()函数使用本地smtp服务器。通常,如果不接受邮件,这是因为本地smtp服务器的配置错误。 (打开中继访问,错误的反向IP查找,动态IP等等)

使用PHPMailerhttps://github.com/PHPMailer/PHPMailer)类并使用(有效)smtp服务器。

答案 1 :(得分:1)

如果未收到消息,请尝试仅使用LF(\ n)。一些Unix邮件传输代理(最明显的是»qmail)自动替换CRLF的LF(如果使用CRLF,则会导致CR加倍)。这应该是最后的手段,因为它不符合»RFC 2822.

http://www.faqs.org/rfcs/rfc2822.html

我建议使用PHP的全功能电子邮件传输类

检查phpmailer calss http://code.google.com/a/apache-extras.org/p/phpmailer/source/browse/trunk/class.smtp.php?r=7

答案 2 :(得分:0)

由于“from”标题电子邮件地址设置为无法解析的主机(my.com),某些服务器会阻止邮件。

尝试使用'from'标题中的真实电子邮件地址。