3

这是我的代码:

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

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

4

3 回答 3

7

老答案:

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

编辑:

截至 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。

于 2011-08-11T22:31:00.553 回答
1

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

如果您使用的是 ec2,则应查看 Amazon SES(简单电子邮件服务)。这是常见问题解答

于 2011-08-11T22:30:00.757 回答
1

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

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

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

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 保存为联系人,以确保我们的电子邮件能够正确发送。

于 2013-03-29T22:45:21.257 回答