如何提高电子邮件的健壮性? [邮枪,laravel]

How to improve email robustness? [mailgun, laravel]

我计划使用以下方式提高电子邮件的稳健性。我正在使用 laravelmailgun。如果 退回电子邮件 mailgun 中,那么我想将其发送给与该电子邮件相关的人(而不是之前的收件人,它与之前的发件人或某人相关)所以我计划使用 Task scheduler 并每小时安排一次此过程。成功发送该电子邮件后,我想从 mailgun.

中删除该电子邮件

我实际上想知道如何实现从 mailgun 获取 退回电子邮件 以及如何使用 Task scheduler 成功发送 i想从 mailgun 中删除该电子邮件。如果有任何样品可以实现这一目标?或者有什么不同的想法?

通常发生退回时,Mailgun 等提供商会根据退回情况重试几次 status/type。在无法发送到该电子邮件地址后,Mailgun 会将该地址放入您的退回列表中,以避免将来发送到该地址。尝试将电子邮件发送到不存在的地址、收件箱已满、域已过期等,真的没有意义。因此,在考虑执行此操作之前,也许你应该查看退回邮件列表。 Mailgun 的仪表板提供了它发生的描述和日期。如果您希望再次发送到特定地址,您可以从退回列表中删除该地址。有关退回的更多信息 here.

您可以使用 mailgun-php or simply use Guzzle to call their API 检索退回邮件。我不确定我删除电子邮件的意思,但希望这对您有所帮助。

编辑:

您可以使用他们的 API 获取您所有的 bounces, and also the message content (retention depends on your plan or settings) if you need the original content. You could also use their webhooks 以获取失败的电子邮件,因此您真的不需要 schedule/cron。

编辑 2:

退回列表仅存储以前退回的电子邮件的电子邮件地址。另外,我刚刚意识到,如果您每小时检查一次退回的邮件,看起来 suppression/bounce API 不会有太大帮助,因为您无法知道邮件是否失败了地址已经在列表中。这是来自退回列表的唯一数据:

      {
        "address": "alice@example.com",
        "code": "550",
        "error": "No such mailbox",
        "created_at": "Fri, 21 Oct 2011 11:02:55 GMT"
      },

看来您必须使用 events API or webhooks 来获取失败的消息。 我以前使用过 mailgun-php,我发现由于 class 的受保护属性,在该库上使用事件并不容易。因此,如果您遇到问题,也许只需使用 Guzzle 或使用 webhook 方法。