防止外发电子邮件被退回

防止外发电子邮件被退回

是否可以在外发邮件中指定一个标题(我正在使用 PHPMailer)来告诉接收服务器我不想收到退回邮件或外出回复?

用例是在注册期间验证电子邮件(即检查电子邮件地址是否存在以及注册用户是否可以访问它)。我不想收到退回的电子邮件。

答案1

对于退回邮件:如果接收服务器支持 DSN ESMPT 扩展RFC 3461,您可以将NOTIFY=NEVER其作为选项设置到 RCPT 命令中:

RCPT TO:<[email protected]> NOTIFY=NEVER

如果服务器不支持 DSN 扩展,那你就倒霉了。

我不相信这对 OOO 回复有用。

答案2

退回邮件通过空信封发件人发送,以防止退回邮件并可能引入退回循环。

您可以对邮件执行相同的操作以防止它们被退回。在 SMTP 事务中,它看起来如下:

MAIL From:<>

虽然这是防止退回的最有效方法,但它也存在一些潜在的缺点。

接收端可能会将一封并非真正退回的电子邮件中的空信封发件人视为垃圾邮件信号。因此您的电子邮件最终可能会被拒绝或自动丢弃。

您很可能不会直接从应用程序向接收域的 MX 发送邮件,而是通过您自己或您选择的服务提供商运行的 MTA 发送。因此,此 MTA 将必须处理发送失败,如果它无法退回,则可能会生成嘈杂的日志。

可以通过将邮件直接从您的应用程序发送到接收域的 MX 来避免后一个问题(请注意,某些托管服务提供商会阻止此类流量)。通过这种方式直接发送邮件意味着您的应用程序将直接看到发送失败。

通常,这个速度足够快,可用于交互式使用,因此当用户提交他们的电子邮件地址时,您可以立即告知用户该电子邮件地址是否不存在。但请记住,虽然它通常很快,但需要 5 秒钟并不罕见,这足以让用户看到某种进度指示器,以了解他们的输入正在被处理。

如果接收域实施灰名单,则需要包含重试逻辑,这可能会导致进度指示器在用户获得确认之前对用户可见几分钟。但如果没有进度指示器,他们仍然需要等待几分钟才能收到电子邮件,因此,从 UI 角度来看,显示几分钟的进度指示器仍然是一种改进。

考虑到在应用程序中实现所有这些功能的复杂性,大多数人选择仅通过 MTA 发送邮件,并让用户反复检查他们的电子邮件,直到电子邮件(希望)到达。

相关内容