我正在尝试使用此代码发送带有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地址没有收到它们:是什么导致这个?有些域正在接受和显示来自我服务器的电子邮件:其他域则没有。这是为什么?
答案 0 :(得分:1)
php mail()
函数使用本地smtp服务器。通常,如果不接受邮件,这是因为本地smtp服务器的配置错误。 (打开中继访问,错误的反向IP查找,动态IP等等)
使用PHPMailer
(https://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'标题中的真实电子邮件地址。