如何在 mailgun 中重新发送丢失的邮件

How to resend dropped emails in mailgun

如何在 mailgun 中重新发送丢失的邮件?

我在我的应用程序中使用 mailgun 发送邮件,但有些邮件被丢弃了。有什么方法可以重新发送丢失的邮件吗?

不完全是你想要的,但我有同样的问题,并向他们的支持寻求帮助。我要注意他们的服务,我会在接下来的 5 分钟内得到答复。

解决方法: 您可以向他们的 API 发送请求以获取退回列表,然后通过解析响应 JSON 手动重新发送。它包括错误和代码,您可以参考这些代码来决定是否包含此电子邮件地址。

Mailgun documentation on bounces API request.

Mailgun 似乎不支持重新发送邮件的简单方法,因此我不得不编写一个复杂的脚本来执行此操作。这是我的步骤:

1) 从 https://api.mailgun.net/v3/{domain}/events?event=rejected+OR+failed

获取错误事件

2) 在错误事件内部,有如下所示的存储信息:

  "storage": {
    "url": "https://se.api.mailgun.net/v3/domains/{domain}messages/{some-key}", 
    "key": "some-key"
  }

3) 使用存储 URL 获取存储详细信息。在这里您可以找到重建消息所需的有关消息的所有信息,包括:tofromsubjectbody-htmlreply-to, attachments 等等。

4) 使用 Mailgun 的消息端点重新发送消息:https://api.mailgun.net/v3/{domain}/messages

有空时,我会清理我的 C# 实现并在 GitHub 上开源它。

您可以通过他们的控制面板和他们的 API 使用 Mailgun 重新发送消息。但它仅适用于关联事件类型为“delivered”或“permanent fail”且不超过您域的邮件消息保留期(我认为大多数情况下为 3 天)。

API:

查看他们的 docs:

curl -s --user 'api:YOUR_API_KEY' \
    https://se.api.mailgun.net/v3/domains/YOUR_DOMAIN_NAME/messages/STORAGE_URL \
    -F to='bob@example.com'

控制面板:

日志页面允许直接在 UI 内重新发送个别消息。只需登录您的 Mailgun 帐户并转到 Logs 选项卡。单击任何符合条件的消息的下拉菜单齿轮,您将在菜单中看到一个名为“重新发送消息”的选项

单击该按钮会出现一个小弹出窗口,您可以在其中输入单个收件人地址。

来自 docs 的如何重新发送消息的示例:

curl -s --user 'api:YOUR_API_KEY' \
    https://se.api.mailgun.net/v3/domains/YOUR_DOMAIN_NAME/messages/STORAGE_URL \
    -F to='bob@example.com'