$body = 'This is a test';
$subject = 'Confirmation';
$headers = 'From: Testing Site' . "\r\n";
$headers .= 'Reply-To: admin@myserver.com' . "\r\n";
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html;charset=iso-8859-1' . "\r\n";
$headers .= 'X-Mailer: PHP/' . phpversion(). "\r\n";
$headers .= 'Delivery-Date: ' . date("r") . "\r\n";
//$headers .= 'Message-Id: <20140316055950.DA8ED58A13CE@myserver.com>' . "\r\n";
mail("example@hotmail.com", $subject, $body, $headers, "-f admin@myserver.com");
mail("example@gmail.com", $subject, $body, $headers, "-f admin@myserver.com");
电子邮件向Gmail发送罚款,但Hotmail始终拒绝此错误:
主持人mx1.hotmail.com [65.55.33.119]说:550 5.7.0(COL0-MC5-F28) 消息无法传递。请确保消息是RFC 5322 兼容。 (回复DATA命令的结尾)。
邮件ID标题由服务器自动生成,但无法手动提供。
为什么Hotmail不高兴?
邮件服务器具有SPF记录,反向DNS,未列入黑名单并通过mxtoolbox.com上的所有检查。
答案 0 :(得分:12)
From
标头无效。它必须具有以下语法:
From: "name" <email-address>
在你的情况下:
From: "Testing Site" <admin@myserver.com>
Reply-To
标题也是如此:
Reply-To: "Testing Site" <admin@myserver.com>
如果它与From
标题相同,您可以省略它(就像您的情况一样)。
PS:RFC 2822 没有声明应该引用地址中的显示名称。换句话说:以下3个标题都应该起作用:
From: "Testing Site" <admin@myserver.com>
From: 'Testing Site' <admin@myserver.com>
From: Testing Site <admin@myserver.com>
答案 1 :(得分:0)
如果您正在使用WordPress,则可以查找适用于Hotmail / Outlook友好型电子邮件功能的插件。
但是,如果它是一个独立的脚本,您可能需要查看Microsoft在URL上对此查询的正式回答:http://answers.microsoft.com/en-us/outlook_com/forum/oemail-osend/why-are-the-emails-sent-to-microsoft-account/b64e3e4a-0d93-40c8-8e28-4be849012f9c
简短的电子邮件服务器提供商必须填写此表单(一次):https://support.live.com/eform.aspx?productKey=edfsmsbl3&ct=eformts&wa=wsignin1.0&scrx=1
为了让Hotmail / Outlook接受他们的电子邮件。
答案 2 :(得分:0)
2)为您的DNS域创建新的SPF记录 3)将该DNS记录添加到您域的DNS中 4)如果您在此过程中某处失败,请阅读detailed SPF record specification
完成此过程后,HOTMAIL会对您的电子邮件感到满意。
答案 3 :(得分:0)
使用PHPMailer库发送邮件而不是mail()函数终于解决了这个问题,对我来说是可行的解决方案。 Jasper N.Brouwer的回答可能更正确地回答了这个问题,虽然我没有机会尝试。