使用php&发送邮件逃避hotmails垃圾文件夹

时间:2008-10-30 13:52:35

标签: php email pear spam

我一直在努力让PEAR :: mail成功地向hotmail用户发送电子邮件,而不会被标记为垃圾邮件并最终进入垃圾邮件文件夹,我只能使用hotmail来解决yahoo / gmail问题。

谷歌建议这是hotmail的常见问题,可能的原因可能包括

  • 服务器主IP的反向DNS错误
  • 缺少SenderId / SPF记录
  • 被列入黑名单

检查了上述所有内容后,我只能想到另一个原因 - 格式不正确的标题?

测试这个理论我设置outlook以通过PEAR :: mail使用的相同地址发送电子邮件并发送快速测试 - 它直接发送到我的收件箱

所以我将PEAR :: mail发送的电子邮件中的标题与Outlook发送的标题进行了比较,并且只有一些差异 - 我只列出了差异以节省空间(以及人们的眼睛)

PEAR ::邮件标题(不在Outlook标题中)

X-PHP-Script: www.example.com/register.php for [users ip address]

Outlook标头(不在PEAR ::邮件标头中)

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)

PEAR ::邮件

Received: from apache by mywebhostname.com with local (Exim 4.67)

标题中的这些小差异是原因还是我在错误的地方?我知道这可能有问题,因此我选择使用PEAR :: mail类而不是自己动手,但现在我真的不知道该去哪里,任何帮助都会非常感激。

更新: 根据changelog的建议我尝试将MS标头添加到PEAR :: mail类,我尝试用PHPMailer替换PEAR :: mail(与&没有额外的标题) - 它们都会在垃圾文件夹中结束。

我开始相信它可能不是标题。

更新2: 我应该提到电子邮件只是注册确认,以验证用户注册的电子邮件地址 - 没有邮件等,所以我们的卷是极低。

我已经考虑过警告提供@ hotmail /实时电子邮件地址的用户将我们添加到他们的地址簿或查看他们的垃圾文件夹 - 但这对我来说似乎不合适 - 可能是我不得不求助于此。 / p>

至于成为发件人得分认证 - 考虑到这些电子邮件的低容量和目的,我不太可能证明这个成本合理。

4 个答案:

答案 0 :(得分:8)

我公司开展专业的电子邮件营销活动(通过强力邮件服务器),我们每天向各种地址发送数千封(已解决的)电子邮件。

您面临的问题是您没有权限。你可能只是一些垃圾邮件发送者试图发送大量的垃圾邮件。

你需要做的是:

  • 添加取消订阅链接
  • 申请hotmail的垃圾邮件报告程序(JMRP)和 MAKE SURE 按下“这是垃圾”按钮的人不会再次邮寄。这会提高你的'发件人得分; @ hotmail并允许您通过消息。
  • 添加SPF和其他反垃圾邮件解决方案。
  • 每分钟不要向@ hotmail.com发送超过50封电子邮件(其他域名有其他限制)

B.t.w我们使用PHPMailer撰写我们的消息,完全没问题:-) 现在的问题实际上是限制接收邮件服务器。

答案 1 :(得分:7)

电子邮件可交付性更接近艺术而非科学。我几乎可以保证它与你的标题无关。试图欺骗标题可能是你能做的最糟糕的事情。 收到:标头是由邮件服务器在收到邮件时添加的:欺骗这会导致您的电子邮件被标记为垃圾邮件:常用的垃圾邮件过滤器之一是计算中继数量(即收到:标题)。如果太多,您的垃圾邮件分数会更高。

反向DNS和SPF是最小的进入障碍。特别是对于Hotmail,在您获得SPF和DNS记录之后还有其他三个非常重要的因素:

  • IP /域名信誉
  • 在地址簿中

声誉与被列入黑名单不同。您需要使用hotmail建立信任。 Hotmail使用Sender Score Certified作为他们的主要声誉经纪人 - 如果您愿意,可以查看您的声誉,但可能会花费您。

如果您使用的是共享主机或过去格格不入的IP地址,那么Hotmail就不会有太多运气。

您通过拥有低垃圾邮件投诉的一致数量来建立声誉。只要您每天都这样做,您就可以整天每小时发送1M条消息。如果您每天发送的邮件少于10,000条,您可能无法建立良好的声誉。您可以在Sender Base处获得有关您的音量的报告。

最后,确保您最终进入收件箱的最佳方法是让您的用户将发送电子邮件地址添加到其地址簿中。 Hotmail将此用作安全发件人列表。事实上,我认为Hotmail现在还有一个额外的可信发件人选项(自从我参加交付游戏以来我已经有一段时间了,而且我没有使用hotmail)。

以下是发送电子邮件的其他一些最佳做法:

  • 始终使用相同的IP地址
  • 始终使用相同的FROM地址
  • 如果您有一个发送简讯的大型清单,请确保退出旧地址(即检查开放费率)
  • 如果您有一个大型列表,请尝试对其进行分段并根据风险从不同的IP地址发送(即,较新的地址可能会将该邮件标记为垃圾邮件)

答案 2 :(得分:1)

我一直在我的项目中使用PHPMailer,而我为避免使用Hotmail的垃圾文件夹所做的就是调用他们在邮件中添加了MS Headers的方法。

Take a look at the source,并自行添加这些标题。

此外,如果您要发送HTML电子邮件,我建议您添加一个文本版本。

答案 3 :(得分:1)

我建议修改你发送的标题以匹配outlook发送的100%,看看是否能解决问题。确实这是一个艰难的问题,Hotmail以拥有一个超级糟糕的垃圾邮件过滤器,向垃圾邮件发送大量合法邮件以及向收件箱发送大量垃圾邮件而闻名。