如何确保以编程方式发送的电子邮件不会自动标记为垃圾邮件?

时间:2008-08-02 08:19:18

标签: email email-spam

这是一个棘手的问题,我一直依赖技术,例如基于许可的电子邮件(即只发送给您有权发送给的人),而不是使用公然垃圾邮件术语。

最近,我以编程方式发送的一些电子邮件已经开始自动转移到人们的垃圾邮件文件夹中,我想知道我能做些什么。

尽管这些特定的电子邮件不是人类会标记为垃圾邮件的事实,但具体而言,它们是包含人们已经支付了很多钱的许可证密钥的电子邮件,所以我认为他们不会认为它们是垃圾邮件

我认为这是一个很大的话题,我本质上是一个无知的傻瓜。

24 个答案:

答案 0 :(得分:329)

使用电子邮件身份验证方法(例如SPFDKIM)来证明您的电子邮件和您的域名属于一起,并防止欺骗您的域名。 SPF网站包含一个向您生成网站DNS信息的向导。

Check您的reverse DNS,以确保您的邮件服务器的IP地址指向您用于发送邮件的域名。

确保您使用的IP地址为not on a blacklist

确保回复地址是有效的现有地址。

在收件人字段中使用收件人的完整真实姓名,而不仅仅是电子邮件地址(例如"John Smith" <john@blacksmiths-international.com>)。

监控您的滥用帐户,例如abuse@yourdomain.com和postmaster@yourdomain.com。这意味着 - 确保这些帐户存在,阅读发送给他们的内容,并根据投诉采取行动。

最后,让真的轻松取消订阅。否则,您的用户将通过按垃圾邮件按钮取消订阅,这将影响您的声誉。

这就是说,让Hotmail接受你的电子邮件仍然是一种黑色艺术。

答案 1 :(得分:30)

在尽可能多的主要电子邮件提供商处注册一个帐户(gmail / yahoo / hotmail / aol / etc)。如果您对电子邮件进行了更改,无论是主要重写,发送电子邮件的代码更改,电子邮件服务器的更改等,请确保将测试邮件发送到您的所有帐户并验证它们未被标记为垃圾邮件。

答案 2 :(得分:26)

您可以告诉您的用户在完成订单时将其发件人地址添加到他们的联系人,如果他们这样做,将会有很大帮助。

否则,我会尝试从您的某些用户那里获取日志。有时他们会详细说明为什么在邮件标题中将其标记为垃圾邮件,您可以使用它来调整文本。

您可以尝试的其他事项:

  • 将您的网站名称或地址放在主题中
  • 保留邮件中指向您域名的所有链接(而不是email.com)
  • 在电子邮件中提供地址或其他联系信息

答案 3 :(得分:24)

来自previous answer的几个要点:

  • 最重要的是:发件人地址(“发件人”)是否属于您从发送电子邮件的服务器上运行的域?如果没有,那就这样吧。切勿使用xxx@gmail.com之类的发件人地址。用户reply-to如果您需要回复来到不同的地址。

  • 您的服务器是否在黑名单中(例如,检查spamhaus.org上的IP)?当邻居表现不佳时,您可以使用共享主机。

  • 邮件是否通过垃圾邮件过滤器进行过滤?使用具有垃圾邮件文件夹的freemailer打开一个帐户并查找。此外,尝试将邮件发送到地址而不进行任何垃圾邮件过滤。

  • 您是否可能需要mail()的第五个参数“-f”来添加发件人地址? (参见PHP手册中的mail()命令)

  • 如果您有权访问日志文件,请检查这些文件。

  • 您是否检查了“发件人:”地址是否有可能的退回邮件(“退回发件人”)?您还可以设置单独的“错误到”地址。

答案 4 :(得分:22)

在发送电子邮件之前确认您拥有正确的电子邮件地址。如果有人在注册时提供了错误的电子邮件地址,请尽快打败他们。

始终在每封电子邮件中包含明确的“如何取消订阅”信息。不要求用户登录取消订阅,它应该是一次点击取消订阅的唯一网址。

这会阻止人们将邮件标记为垃圾邮件,因为“取消订阅”太难了。

答案 5 :(得分:16)

您可以考虑处理投放问题的第三方电子邮件服务:

  • 确切目标
  • 垂直响应
  • 常联络
  • Campaign Monitor
  • 艾玛
  • 返回路径
  • IntelliContact
  • SilverPop

答案 6 :(得分:16)

除了所有其他答案之外,如果您要发送包含URL作为链接文本的HTML电子邮件,请确保该URL与链接文本匹配。我知道如果没有,Thunderbird会自动将它们标记为骗局。

错误的方式:

Go to your account now: <a href="http://www.paypal.com.phishers-anonymous.org/">http://www.paypal.com</a>

正确的方式:

Go to your account now: <a href="http://www.yourdomain.org/">http://www.yourdomain.org</a>

或使用不相关的链接文字而不是网址:

<a href="http://www.yourdomain.org/">Click here to go to your account</a>

答案 7 :(得分:15)

有时候发送电子邮件就像是黑魔法。反向DNS非常重要。

我发现仔细跟踪NDR很有帮助。我将所有NDR指向一个地址,我有一个解析它们的Windows服务(Google ListNanny)。我尽可能多地从NDR中将信息放入数据库,然后在其上运行报告,看看我是否突然开始被某个域阻止。此外,您应该避免向以前标记为NDR的地址发送电子邮件,因为这通常是垃圾邮件的良好指示。

如果您需要一次发送大量客户服务电子邮件,最好在每个电子邮件之间加一个延迟,因为如果您一次向一个域发送太多几乎相同的电子邮件,那么您肯定会发送电子邮件在他们的黑名单上。

有些域名有时无法提供。 Comcast.net是最糟糕的。

确保您的IP未列在http://www.mxtoolbox.com/blacklists.aspx等网站上。

答案 8 :(得分:14)

我不想告诉你,但我和其他人可能正在使用白名单默认值来控制我们对垃圾邮件的过滤。

这意味着来自未知来源的所有电子邮件都会自动发送垃圾邮件并转移到垃圾邮件文件夹中。 (我不会让我的电子邮件服务删除垃圾邮件,因为我想总是查看到达的误报,通过快速扫描文件夹很容易做到。)

我甚至收到了自己发来的垃圾邮件,因为(1)我通常不会向自己发送电子邮件;(2)有垃圾邮件发送者伪造我发回给我的垃圾邮件地址。< / p>

因此,为了摆脱垃圾邮件指定,我必须考虑您的邮件可能是合法的(来自发件人和主题信息)并首先以明文打开(我的所有传入邮件的默认邮件,无论是否为垃圾邮件),看看是否这是合法的。我的垃圾邮件文件夹不会使用电子邮件中的任何链接,因此我可以防止棘手的图像链接和其他不当行为。

如果我希望来自同一来源的未来来到我的收件箱并且不被转用于垃圾邮件审核,我会将其指定给我的电子邮件客户端。对于那些使用批量邮件转发器和每个邮件的唯一发件人地址的组织来说,这太糟糕了。他们永远不会得到我的批准并且总是出现在我的垃圾邮件文件夹中,如果我很忙,我将永远不会看到它们。

最后,如果电子邮件在明文中不易清晰,即使以HTML格式发送,我也可能只是将其删除,除非根据来源和以前的宝贵经验,我知道这是我感兴趣的东西。

正如您所看到的,它最终受用户控制,并且没有自动行为可以说服这样一个系统,使您的邮件单独从其结构中合法化。在这种情况下,您需要玩得很好,不要做任何类似于网络钓鱼的事情,并且让愿意信任您邮件的用户轻松将您添加到他们的白名单中。

答案 9 :(得分:13)

Yahoo使用名为Sender ID的方法,该方法可以在The SPF Setup Wizard配置并输入到您的DNS中。 Exchange,Hotmail,AOL,Yahoo和其他公司的重要组成部分之一是为您的域提供反向DNS。那些将淘汰大多数问题。但是,您永远不能阻止某人故意阻止您的或自定义规则。

答案 10 :(得分:13)

我的某个应用程序的电子邮件经常被标记为垃圾邮件。它是带有单个链接的html,我在文本/ html内容类型中以html身份发送。

我对此问题的最成功解决方案是撰写电子邮件,使其看起来像是由电子邮件客户端生成的。

我将电子邮件更改为多部分/替代mime文档,现在我生成text / plain和text / html部分。

电子邮件不再被Outlook视为垃圾邮件。

答案 11 :(得分:11)

您需要反向DNS条目。您不需要两次向同一用户发送相同的内容。您需要使用一些常见的Webmail和电子邮件客户端进行测试。 就个人而言,我通过新安装的垃圾邮件刺客,训练有素的垃圾邮件刺客,以及多个hotmail,gmail和aol帐户来管理我。

但您是否看到过似乎没有链接或宣传任何内容的垃圾邮件?这是一个试图影响你的贝叶斯过滤器的垃圾邮件发送者。如果他能获得较高的评分,然后在他未来的电子邮件中包含一些单词,那么它可能会自动学习为好。因此,您无法确定在邮寄时将设置用户过滤器的内容。

最后,我没有按域排序我的列表,而是将其随机化。

答案 12 :(得分:10)

我发现使用收件人在正文中使用真实的名字和姓氏是通过垃圾邮件过滤器的明智之举。

答案 13 :(得分:8)

在英国,最佳做法是为您的公司提供真实的实际地址及其注册号码。

这样一切都是开放和诚实的,他们不太可能手动将其标记为垃圾邮件。

答案 14 :(得分:7)

我想补充一下:

点击“取消订阅”后提供真正取消订阅。我看过真正的新闻简报提供了一个虚拟的取消订阅链接,点击后显示“已成功取消订阅”,但我仍会收到更多新闻简报。

答案 15 :(得分:7)

您可以做的最重要的事情是确保您发送电子邮件的人在收到您的电子邮件时不太可能会点击“垃圾邮件”按钮。所以,坚持以下经验法则:

  • 确保您获得发送电子邮件的人的许可。不要向未向您提出要求的人发送电子邮件。

  • 清楚地确定每条消息的顶部是谁,以及此人收到电子邮件的原因。

  • 每月至少一次,向列表中的人发送提醒电子邮件(如果您正在运行列表),强制他们选择重新加入列表,以便继续接收您的通信。是的,这意味着您的列表会随着时间的推移而缩短,但更重要的是,您的列表中的人员会被“买进”,并且不太可能标记您的电子邮件。

  • 保持您的内容高度相关和有用。

  • 让人们轻松选择退出进一步的沟通。

  • 使用SendGrid等电子邮件发送服务,努力维护良好的IP声誉。

  • 避免使用短链接 - 这些通常被列入黑名单。

遵循这些经验法则将会有很长的路要走。

答案 16 :(得分:6)

我在过去的许多网站上遇到过同样的问题。确保用户收到电子邮件的唯一保证方法是建议用户将您添加到安全列表中。任何其他方法实际上只能是有用的东西,并不能保证。

答案 17 :(得分:6)

注册您服务的用户很可能会输入您不正确的输入错误的电子邮件。例如:chris @ gmial.com - 或 - james @ hotnail.com

此类域名被配置为 spamtraps ,它会自动标记您的电子邮件服务器的IP和/或域名并损害其声誉。

要避免这种情况,请仔细检查产品订阅时输入的电子邮件地址。此外,在发送产品密钥或接受订阅之前,请发送确认电子邮件以确保此电子邮件地址由输入确认电子邮件的人员100%验证。验证电子邮件应要求收件人单击链接或回复,以便确认邮箱所有者是注册人。

答案 18 :(得分:4)

听起来你依赖于一些反馈来确定接收端卡住了什么。您应该自己检查出站邮件是否有明显的“垃圾邮件”。

购买任何体面的垃圾邮件控制系统,并通过它发送您的出站邮件。如果你发送任何体面的邮件,你应该这样做,因为发送出站病毒的风险,特别是如果你有桌面Windows用户。

例如,Proofpoint在单个部署中具有垃圾邮件+防病毒+一些信誉服务。 (我以前在那里工作,所以我碰巧知道这个问题。我相信这个领域的其他供应商也有类似的功能。)但是你明白了。如果您通过基本的商业垃圾邮件控制设置发送邮件,但它没有通过,则不应该离开您的网络。

此外,有些公司可以帮助您提高非垃圾邮件,出站电子邮件的发送率,例如Habeas。

答案 19 :(得分:3)

Google有一个工具和指南。您可以在以下网址找到它们:https://postmaster.google.com/注册并验证您的域名,Google会对该IP地址和域名进行单独评分。

来自bulk senders guidelines

身份验证可确保您的邮件正确分类。缺少身份验证的电子邮件可能会被拒绝或放入垃圾邮件文件夹,因为它们很可能是用于网络钓鱼诈骗的伪造邮件。此外,出于安全原因,带有附件的未经身份验证的电子邮件可能会被彻底拒绝。

确保Gmail可以识别您身份:

  • 使用一致的IP地址发送群发邮件。
  • 为您发送邮件的IP地址保留有效的反向DNS记录,指向您的域。
  • 在&#39;来自:&#39;中使用相同的地址您发送的每封邮件的标题。 我们还建议如下:

  • 使用DKIM签名邮件。我们不会使用少于1024位的密钥对使用密钥签名的消息进行身份验证。

  • 发布SPF记录。
  • 发布DMARC政策。

答案 20 :(得分:1)

首先,您需要确保所需的电子邮件身份验证机制(如SPF和DKIM)已经就绪。这两种突出的方式可以证明您是电子邮件的实际发件人,并且并不是真正的欺骗者。这样可以减少将电子邮件过滤为垃圾邮件的可能性。

第二件事是,您可以针对不同的DNSBL检查域名的反向DNS输出。在终端上使用以下简单命令:

  **dig a +short (domain-name).(blacklist-domain-name)**

  ie.  dig a +short example.com.dsn.rfc-clueless.org
  > 127.0.0.2

在上述示例中,这意味着您的域“ example.com”被列入黑名单,但由于域设置合规性(rfc-clueless.org列表域存在合规性问题)

注意:我更喜欢multivalleypepipost tool检查域列表。

“发件人地址/回复至ID”应该正确,请始终在您的电子邮件正文中使用可见的取消订阅按钮(这将帮助您的用户从您的电子邮件列表中注销,而不会破坏您的域信誉)

答案 21 :(得分:1)

大多数以编程方式生成的电子邮件的意图通常是事务性的,触发的或警报性质的-这意味着它们是重要的电子邮件,绝不应该进入垃圾邮件。

说过,在将电子邮件标记为垃圾邮件之前要考虑多个参数。虽然电子邮件列表的质量是要考虑的最重要的参数,但是我在讨论中跳过了这一点,因为在这里,我们谈论的是发送给我们自己或已知电子邮件地址的重要电子邮件。

除了列表质量,其他三个重要参数是;

  1. 发件人信誉
  2. 符合电子邮件标准和身份验证(SPF,DKIM,DMARC,rDNS)
  3. 电子邮件内容

发件人信誉=发送IP地址的信誉+返回路径/信封域的信誉+发件人域的信誉。

您的发件人信誉没有直接答案。这是因为有多个机构(例如SenderScore,信誉机构等)来维护您域的信誉得分。除了Gmail,Yahoo之类的ISP外,Outlook还维护着每个域名的信誉。

但是,您可以使用 GradeMyEmail 之类的免费工具来360度查看您的声誉以及电子邮件设置或其他任何与合规性相关的潜在问题。

有时,如果您使用的是新域来发送电子邮件,则这些域也会被发现为垃圾邮件。您应该检查您的域是否在任何全局阻止列表中列出。同样,GradeMyEmail和MultiRBL是识别阻止列表的有用工具。

一旦确定了发件人的信誉得分,就应该检查您的电子邮件发送域是否符合所有电子邮件身份验证和标准。

  1. SPF
  2. DKIM
  3. DMARC
  4. 反向DNS

为此,您可以再次使用GradeMyEmail或MXToolbox来了解身份验证的潜在问题。

您的SPF,DKIM和DMARC应该始终通过,以确保您的电子邮件符合标准的电子邮件身份验证。 以下是这些身份验证在Gmail中的外观示例: Email Authentication

类似地,您可以使用诸如Mail-Tester之类的工具来扫描完整的电子邮件内容,并告知可能触发垃圾邮件过滤器的关键字。

答案 22 :(得分:0)

我总是使用: https://www.mail-tester.com/

它向我提供了有关发送电子邮件的技术部分的反馈。像SPF记录,DKIM,Spamassassin得分等。即使我知道需要什么,我也会不断出错,mail-tester.com可以很容易地找出可能出错的地方。

答案 23 :(得分:0)

要在使用sendmail时允许 DMARC 检查SPF是否通过并对齐,请确保您设置了信封发件人地址(-f或{ {1}}参数)到与-r标头地址中的域匹配的内容。

使用PHP:

使用PHP的内置From:函数而不设置第5个参数将导致DMARC SPF检查未正确对齐。默认情况下,sendmail将使用网络服务器的用户RFC5321。MailFrom / Return Path标头发送电子邮件。

例如,假设您要在mail()网络服务器上托管网站domain.com。如果未设置其他参数,则参数:

host.com

电子邮件收件人将收到带有以下邮件标题的电子邮件:

mail($to,$subject,$message,$headers); // Wrong way

即使这通过了SPF检查,也将是未对齐的(因为domain.com和host.com不匹配),这意味着DMARC SPF检查将因为未对齐而失败。

相反,您必须通过在PHP Return-Path: <your-website-user@server.host.com> From: <your-website-user@domain.com> 函数中包含第5个参数,将信封发件人地址传递给sendmail,例如:

mail()

在这种情况下,电子邮件收件人将收到带有以下邮件标题的电子邮件:

mail($to,$subject,$message,$headers, '-r bounce_email@domain.com'); // Right way

由于这两个标头均包含来自Return-Path: <bounce_email@domain.com> From: <your-website-user@domain.com> 的地址,因此SPF将通过并被对齐,这意味着DMARC也将通过SPF检查。