【问题标题】:How to format an email that Hotmail / Outlook is happy with?如何格式化 Hotmail / Outlook 满意的电子邮件?
【发布时间】:2014-04-21 10:30:12
【问题描述】:
$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 的所有检查。

【问题讨论】:

标签: php email outlook hotmail


【解决方案1】:

如果您使用的是 WordPress,您可以查找 Hotmail/Outlook 友好电子邮件功能的插件。

但是,如果它是一个独立的脚本,您可能想查看 Microsoft 对此查询的官方回答,网址为: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 接受他们的电子邮件。

【讨论】:

  • 是的,一个独立的脚本,但直到最近才出现传递到 hotmail 的问题。我会填写表格,看看是否可以解决。
  • 为了让微软告诉我他们不会将我的 i.p 列入白名单而经历了那场磨难,但除了它是自动化的之外,他们无法说明原因。
【解决方案2】:

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>

【讨论】:

  • 语法不错,我只是忘了把这个加到$header。此代码适用于我:$header = "from: 'Testing Site' &lt;admin@myserver.com&gt;"。认为被提及可能会很好。
【解决方案3】:

1) 转到SPF record wizard

2) 为您的 DNS 域创建新的 SPF 记录
3) 将该 DNS 记录添加到您域的 DNS
4)如果你在这个过程中的某个地方失败了,请阅读detailed SPF record specification

完成此过程后,HOTMAIL 将对您的电子邮件感到满意。

【讨论】:

  • OP 提到 SPF 是地方。
  • @JasperN.Brouwer 是的,我的错误,我应该在回答之前看到它,无论如何我认为答案仍然值得不要删除。它可能会使未来有同样问题但没有 SPF 记录的访问者受益。
【解决方案4】:

使用 PHPMailer 库而不是 mail() 函数来发送邮件终于解决了这个问题,对我来说是可行的解决方案。 Jasper N. Brouwer 的回答可能更正确地回答了这个问题,尽管我还没有机会尝试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    相关资源
    最近更新 更多