为什么我不能向Hotmail发送电子邮件?

时间:2011-08-11 22:27:57

标签: php email hotmail

这是我的代码:

$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');

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

3 个答案:

答案 0 :(得分:7)

旧答案:

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

<强> 编辑:

截至2015年6月,共同要求是:

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

2)使用-all代替〜所有

的SPF记录

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。

答案 1 :(得分:1)

所有ISP和邮件服务器都有不同的垃圾邮件检测方法和黑名单。您应该使用代表您处理交付能力问题的第三方,例如SendGrid。通过SendGrid发送电子邮件就像在问题中一样简单。看看这个example。此外,他们也有相当公平的定价和免费等级。

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

答案 2 :(得分:1)

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的验证。< / p>

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

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