【问题标题】:Why can't I send an email to Hotmail?为什么我不能向 Hotmail 发送电子邮件?
【发布时间】:2016-07-27 04:33:15
【问题描述】:

这是我的代码:

$boundary = sha1('whatever');

$headers = 'MIME-Version: 1.0'."\r\n";
$headers .= 'From: "Domainname" emailname@domain.com'."\r\n";
$headers .= 'Reply-to: Domainname <emailname@domain.com>'."\r\n";
$headers .= 'X-Priority: 3'."\r\n";
$headers .= 'X-Mailer: Mail 1.0'."\r\n";
$headers .= 'Subject: '.$subject."\r\n"; 
$headers .= 'Content-Type: multipart/alternative; boundary="'.$boundary.'"'."\r\n\r\n";

$message = '--'.$boundary."\r\n";
$message .= 'Content-Type: text/plain; charset="utf-8"'."\r\n\r\n";
$message .= $text."\r\n";
$message .= '--'.$boundary."\r\n";
$message .= 'Content-Type: text/html; charset="utf-8"'."\r\n\r\n";
$message .= $html."\r\n";
$message .= '--'.$boundary.'--';

mail($email, $subject, $message, $headers);

它适用于 Gmail、Yahoo、GMX ...但不适用于 Hotmail/Live/MSN。

因为它适用于 Gmail,我可以假设它与我的服务器无关,对吧?

我也试过了:

mail('username@hotmail.com', 'This is a subject', 'This is the body');

同样的问题。它甚至没有发送到我的垃圾文件夹。

【问题讨论】:

    标签: php email hotmail


    【解决方案1】:

    旧答案:

    Hotmail 会阻止没有 SPF 记录的域。你可以做一个here

    编辑:

    截至 2015 年 6 月,常见要求是:

    1) DKIM 在 Exim 中启用 DKIM 现在是一个非常重要的工具,可以减少您的电子邮件被标记为垃圾邮件的机会。强烈建议为您的域启用 DKIM。

    2) SPF 记录使用 -all 而不是 ~all

    3) DMARC 记录可帮助远程服务器决定如何处理失败的 DKIM/SPF 消息。

    4) 常见的事情,a) 例如在发送 IP 时进行反向 IP 查找,b) 对该 rDNS 值进行正向查找,最好指向相同的 IP,c) 主机名上的 MX 记录。

    例子:

    "v=spf1 a mx ip4:1.2.3.4 -all"
    

    其中 1.2.3.4 是您的服务器的 ip。

    【讨论】:

    • 天啊,这是我第一次听到有人提到 SPF 记录。我现在就试一试。谢谢!
    • 没问题 :) 但是您仍然需要正确的标题。也许你可以使用 phpmailer 类?这个对所有类型的电子邮件都有很好的支持。
    【解决方案2】:

    所有 ISP 和邮件服务器都有不同的垃圾邮件检测方法和黑名单。您应该使用代表您处理交付能力问题的第三方,例如SendGrid。通过 SendGrid 发送电子邮件与您在问题中的操作方式一样简单。看看这个example。此外,它们的定价非常公道,而且还提供免费套餐。

    如果您使用的是 ec2,则应查看 Amazon SES(简单电子邮件服务)。这是FAQ

    【讨论】:

    • 谢谢,但我真的不想花钱买一些本来应该有用的东西。
    • 我了解您不想为看起来如此简单和标准的东西付费。问题是,您最终会因交付能力差而付出代价。试试这两种服务的免费套餐。如果您发送的电子邮件少于他们的免费套餐,那么您无需支付任何费用并获得所有好处。如果您发送更多邮件,那么您肯定需要考虑使用第三方邮件递送服务。
    【解决方案3】:

    Microsoft 依靠各种身份验证过滤器来确定电子邮件是否为垃圾邮件。

    常见的行业惯例包括检查电子邮件是否存在 SPF 验证、发件人 ID 和收到的电子邮件中的 DKIM 记录。

    Sender ID Framework 是一种电子邮件身份验证技术协议,可通过验证发送电子邮件的域名来帮助解决欺骗和网络钓鱼问题。

    SPF(发件人策略框架)本质上是一个额外的 DNS 记录,它直接指定远程邮件服务器应该从哪里接收邮件。

    DKIM (DomainKey Identified Mail) 是旧 DomainKeys 系统的新实现,本质上是一种更复杂的 SPF/邮件验证方法,需要使用私钥对邮件进行签名,并与在DNS 记录。这实质上是更安全的 SPF 版本。

    您可以在发送时从 test@domain.com 向 check-auth@verifier.port25.com 发送电子邮件,电子邮件将返回说明 DKIM、DomainKeys、SPF、SpamAssassin 和 Sender-ID 的验证。

    然而,最近几个月,我发现尽管在发送的电子邮件中包含了这些元素,但微软仍在放弃合法的电子邮件。微软推荐使用Sender Path的服务,这是一种付费认证服务。

    但我发现,一旦收件人将我们的电子邮件地址列为已保存的联系人,他们就可以正常接收我们的电子邮件。因此,我为我们公司创建了一个 vCard,并敦促我们的客户使用 Hotmail 或 Windows Live 电子邮件服务将 vCard 保存为联系人,以确保我们的电子邮件能够正确发送。

    【讨论】:

      猜你喜欢
      • 2014-12-15
      • 2016-02-22
      • 2010-12-19
      • 2011-02-24
      • 2016-05-02
      • 2014-05-30
      • 2012-03-21
      • 2020-11-16
      • 1970-01-01
      相关资源
      最近更新 更多