我计划使用以下方式提高电子邮件的稳健性。我正在使用 laravel 和 mailgun。如果任何退回电子邮件在mailgun
中,那么我想将其发送给与该电子邮件相关的人(不是之前的收件人,而是与之前的发件人或某人相关),所以我计划使用任务调度程序并每小时安排一次此过程。成功发送该电子邮件后,我想从 mailgun
中删除该电子邮件。
我实际上想知道如何实现从 mailgun
获取退回电子邮件,如果使用任务计划程序成功发送,我想删除该电子邮件来自mailgun
。是否有任何样本可以实现这一目标?或者有什么不同的想法?
最佳答案
通常,当发生退回邮件时,Mailgun 等提供商会根据退回邮件状态/类型重试几次。发送到该电子邮件地址失败后,Mailgun 会将该地址放入您的退回列表中,以避免将来发送到该地址。尝试将电子邮件发送到不存在的地址、收件箱已满、域已过期等确实没有意义。因此,也许您应该在考虑这样做之前检查一下您的退回邮件列表。 Mailgun 的仪表板提供了事件发生的描述和日期。如果您希望再次发送至特定地址,您可以从退回列表中删除该地址。有关退回邮件的更多信息 here .
您可以使用mailgun-php或者简单地使用Guzzle调用他们的API来检索您的退回邮件。我不确定您删除电子邮件的含义,但希望这会有所帮助。
编辑:
您可以使用他们的 API 来获取您的所有 bounces ,还有 message content (保留取决于您的计划或设置)如果您需要原始内容。您还可以使用他们的 webhooks获取失败的电子邮件,因此您实际上不需要安排/cron。
编辑2:
退回邮件列表仅存储以前退回的电子邮件的电子邮件地址。另外,我刚刚意识到,如果您每小时检查一次退回邮件,看起来抑制/退回 API 不会有太大帮助,因为您无法知道列表中已有地址的邮件是否失败。这是退回列表中的唯一数据:
{
"address": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c2a3aeaba1a782a7baa3afb2aea7eca1adaf" rel="noreferrer noopener nofollow">[email protected]</a>",
"code": "550",
"error": "No such mailbox",
"created_at": "Fri, 21 Oct 2011 11:02:55 GMT"
},
所以看起来你必须使用 events API或webhooks获取失败的消息。 我用过mailgun-php不久前,我发现由于该类的 protected 属性,在该库上使用事件并不容易。因此,如果您遇到麻烦,也许只需使用 Guzzle 或使用 webhook 方法即可。
关于laravel - 如何提高电子邮件的稳健性? [邮件枪,laravel],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62946370/