我一直在尝试使用PEAR::mail成功地向hotmail用户发送电子邮件,而不被标记为SPAM并最终进入垃圾邮件文件夹,对于yahoo/gmail却没有任何问题,但是与hotmail存在问题。
谷歌建议这是一个常见的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
我能看到的唯一其他差异是:
- 发件人和收件人标头的顺序被颠倒了
- 在标头的“已接收”部分
Outlook
Received: from myhomehostname.com ([ip address] helo=simber)
by mywebhostname.com with local (Exim 4.67)
PEAR::mail
Received: from apache by mywebhostname.com with local (Exim 4.67)
这些头部的微小差异可能是原因吗?还是我在错误的地方寻找?我知道这可能会有问题,因此选择使用PEAR::mail类而不是自己编写代码,但现在我真的不知道该怎么办了,非常感谢任何帮助。
更新:根据changelog的建议,我尝试将MS头部添加到PEAR::mail类中,并尝试使用PHPMailer替换PEAR::mail(带或不带额外的头部)- 它们都最终进入垃圾邮件文件夹。
我开始相信这可能并不是头部的问题。
更新2:我应该提到这些电子邮件只是注册确认,以验证用户注册时使用的电子邮件地址 - 没有群发邮件等操作,因此我们的数量非常少。
我考虑警告提供@hotmail/live电子邮件地址的用户将我们添加到他们的通讯录中或检查垃圾邮件文件夹 - 但这对我来说似乎不专业 - 可能我必须采取这种方法。
至于成为发件人评分认证 - 考虑到这些电子邮件的低数量和目的,我很难证明这个成本。