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

最近,我以编程方式发送的一些电子邮件开始被自动转移到别人的垃圾邮件文件夹中,我不知道该怎么办。

尽管这些特定的电子邮件并不是人类会标记为垃圾邮件的,具体来说,它们是包含许可密钥的电子邮件,人们已经花了很多钱购买,所以我不认为他们会认为它们是垃圾邮件

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


当前回答

首先,您需要确保所需的电子邮件身份验证机制(如SPF和DKIM)到位。这两个是证明你是电子邮件的实际发件人,而不是真的被欺骗的重要方法。这降低了电子邮件被过滤为垃圾邮件的机会。

第二件事是,您可以根据不同的DNSBLs检查您的域名的反向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列表域有合规问题)

注:我更喜欢multivalley和pepipost工具来检查域名列表。

从地址/回复到id应该是正确的,总是使用可见的退订按钮在你的电子邮件正文(这将帮助你的用户从你的电子邮件列表退出,而不损害你的域名声誉)

其他回答

要允许DMARC检查SPF通过,并在使用sendmail时进行对齐,请确保将信封发件人地址(-f或-r参数)设置为与From:报头地址中的域匹配的内容。

PHP:

使用PHP内置的mail()函数而不设置第5个参数将导致DMARC SPF检查不对齐。默认情况下,sendmail将以web服务器的用户RFC5321发送电子邮件。MailFrom / Return路径头。

例如,假设您在host.com web服务器上托管您的网站domain.com。如果您不设置附加参数参数:

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

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

Return-Path: <your-website-user@server.host.com>
From: <your-website-user@domain.com>

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

相反,你必须通过包含PHP mail()函数中的第5个参数将信封发件人地址传递给sendmail,例如:

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

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

Return-Path: <bounce_email@domain.com>
From: <your-website-user@domain.com>

由于这两个报头都包含来自domain.com的地址,因此SPF将通过并对齐,这意味着DMARC也将通过SPF检查。

以下是之前回答中的几个要点:

Most important: Does the sender address ("From") belong to a domain that runs on the server you send the E-Mail from? If not, make it so. Never use sender addresses like xxx@gmail.com. User reply-to if you need replies to arrive at a different address. Is your server on a blacklist (e.g. check IP on spamhaus.org)? This is a possibility when you're on shared hosting when neighbours behave badly. Are mails filtered by a spam filter? Open an account with a freemailer that has a spam folder and find out. Also, try sending mail to an address without any spam filtering at all. Do you possibly need the fifth parameter "-f" of mail() to add a sender address? (See mail() command in the PHP manual) If you have access to log files, check those, of course. Do you check the "from:" address for possible bounce mails ("Returned to sender")? You can also set up a separate "errors-to" address.

在过去的工作中,我在很多网站上都遇到过同样的问题。确保用户收到邮件的唯一保证方法是建议用户将你添加到安全列表中。其他任何方法都只能帮助解决这个问题,而且不能保证。

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

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

你还可以试试其他方法:

在主题中写上你的网站名称或地址 保持邮件中的所有链接指向你的域名(而不是email.com) 在邮件中写上地址或其他联系方式

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

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

我甚至把自己的电子邮件放到垃圾邮件桶里,因为(1)我通常不给自己发电子邮件,(2)有垃圾邮件发送者在发给我的垃圾邮件中伪造我的回复地址。

因此,为了摆脱垃圾邮件的定义,我必须考虑您的邮件可能是合法的(从发件人和主题信息来看),并首先以明文形式打开它(我对所有传入邮件的默认设置,无论是否为垃圾邮件),以查看它是否合法。我的垃圾邮件文件夹不会使用电子邮件中的任何链接,这样我就可以免受棘手的图像链接和其他不当行为的影响。

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

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

正如您所看到的,它最终是在用户的控制之下,没有自动的行为可以说服这样的系统,仅从其结构来看,您的邮件是合法的。在这种情况下,您需要表现良好,不要做任何类似于网络钓鱼的事情,并使愿意信任您的邮件的用户很容易将您添加到他们的白名单中。