我一直在尝试让 PEAR::mail 成功地将电子邮件发送给 hotmail 用户,而不会被标记为垃圾邮件并最终进入垃圾文件夹,我只使用 hotmail 对 yahoo/gmail 没有任何问题。
google 建议这是 hotmail 的常见问题,可能的原因可能包括
- 服务器主 IP 的反向 DNS 不正确
- 缺少 SenderId/SPF 记录
- 被列入黑名单
检查了以上所有内容后,我只能想到另一个原因-标题格式不正确?
为了测试这个理论,我将 Outlook 设置为通过 PEAR::mail 使用的相同地址发送电子邮件并发送了一个快速测试 - 它直接发送到我的收件箱
所以我将 PEAR::mail 发送的电子邮件的标题与 Outlook 发送的标题进行了比较,只有一些差异 - 我只列出了差异以节省空间(和人们的眼睛)
PEAR::mail 标头(不在 Outlook 标头中)
X-PHP-Script: www.example.com/register.php for [users ip address]
Outlook 标头(不在 PEAR::mail 标头中)
X-Mailer: Microsoft Office Outlook 11
Thread-Index: Ack6CWSQlgV8s6+6SWyifka2NNpB7g==
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3350
我能看到的唯一其他区别是
- From: 和 To: 标头的顺序颠倒了
- 并在 Received: 标题部分
外表
Received: from myhomehostname.com ([ip address] helo=simber)
by mywebhostname.com with local (Exim 4.67)
梨::邮件
Received: from apache by mywebhostname.com with local (Exim 4.67)
标题中的这些小差异可能是原因还是我找错了地方?我知道这可能有问题,因此为什么我选择使用 PEAR::mail 类而不是自己滚动但现在我真的不知道该去哪里,任何帮助将不胜感激。
更新:根据更改日志的建议,我尝试将 MS 标头添加到 PEAR::mail 类中,并且我尝试用 PHPMailer 替换 PEAR::mail(带有 & 没有额外的标头)-它们最终都在垃圾文件夹中。
我开始相信它可能不是标题。
更新 2:我应该提到这些电子邮件只是用于验证用户注册的电子邮件地址的注册确认 - 没有邮件截图等,因此我们的数量非常低。
我曾考虑警告提供@hotmail/live 电子邮件地址的用户将我们添加到他们的地址簿或检查他们的垃圾文件夹 - 但这对我来说似乎不专业 - 我可能不得不求助于这个。
至于获得发件人分数认证 - 考虑到这些电子邮件的数量和目的低,我不太可能证明这样做的成本是合理的。