我在 Laravel 5.5 中开发了一个发送一些电子邮件的应用程序。
如果收件人出现错误(不存在的帐户、空间限制等),我们不会收到退回的答复,而是收到一封带有典型错误的电子邮件:
“邮件传递子系统 ...”。
那有可能发生吗?
配置如下:
Godaddy 上的共享主机
G Suite por 电子邮件(MX 记录)
Laravel 使用 localhost 发送电子邮件(不是 gmail)
答案1
如果我误解了您的问题中的任何内容,请提前道歉,重复您已经知道的任何内容,或者在我的解释中犯任何错误/遗漏=)。
如果收件人出现错误(不存在的帐户、空间限制等),我们将不会收到退回的邮件,而是收到一封带有典型错误的电子邮件:“邮件传递子系统......”
我假设你肯定知道退回邮件应该返回,并且接收服务器不使用包罗万象或者只是默默地丢弃您的邮件(两种方式都可以)。
退回的邮件不应该自动返回吗?
是的,它们是自动交付的,假设它们被创建了(见上文)。
然而,退回通知通常通过退回地址,电子邮件发送时标头中指定的返回路径。这通常是一个单一的返回地址,因此 Google 的 MX 记录可能会在这里发挥作用。重要的是,这不仅仅是一个普通地址。关于故障排除,一旦电子邮件发送给收件人,From
此返回路径通常会列为标头。Return-Path
还有一个小问题,就是谁会生成退回邮件。实际上,最后甲基安替比/甲基安替比或实际处理给定电子邮件的程序是负责生成退回通知的程序。这对解决任何问题都有潜在影响。
谁生成退回通知?
如果消息被接受(例如收件人存在)但之后发生另一个错误(例如磁盘空间不足),则接收方负责生成任何退回通知并通过正确的返回路径发送它(参见上文)。
如果接收方拒绝消息(例如,收件人不存在),则发送方(可能是您的应用程序)负责生成/处理任何退回通知。
无论哪种情况,Godaddy 可能根本不参与(Laravel 有一些邮件选项并且您从未指定 localhost 如何生成电子邮件,因此很难判断 GoDaddy 是否可能参与其中)。
解决您的情况
我将首先检查与 Google 相关的所有内容,并确认您的常规电子邮件消息是否被正确接收(MX 记录定义了哪些服务器接收给定域的邮件,无论该域是通过谁注册的)。
关于您的应用程序,您没有提供太多细节。我知道 Laravel 可以处理传入的电子邮件,但我对这种设置一无所知。由于您说您的应用程序通过本地主机发送邮件,猜测您可能需要为退回路径指定正确的标头(再次参见上文)。
通常,MTA 将指定返回路径(有时称为“信封发件人”)。在这种情况下(使用 PHP),此标头也称为From Address
,同样不要与正常地址混淆From
。我不熟悉 Laravel,所以我无法提供任何具体步骤,但从基本的谷歌搜索来看,这个值似乎可以在框架内设置。
有用的测试地址
附注:您可能对从此处提取的测试电子邮件地址感兴趣StackOverflow 问题这两个地址,[电子邮件保护]和[电子邮件保护],除了退回电子邮件外什么也不做,因此对于测试您的系统如何处理这些类型的消息很有用。