退信处理¶
在设置 -> 退信中启用退信处理。POP3 退信扫描和 API 只有在启用此设置后才会可用。
POP3 退信邮箱¶
在设置 -> 退信中配置退信邮箱。活动(或在设置中)设置的"发件人"电子邮件地址应该有一个 POP3 邮箱来接收退信邮件,或者您应该配置一个专用的 POP3 邮箱,并在设置 -> SMTP -> 自定义头部框中将该地址添加为 Return-Path(信封发件人)头部。例如:
[
{"Return-Path": "your-bounce-inbox@site.com"}
]
某些邮件服务器也可能将退信返回到 Reply-To 地址,这也可以添加到头部设置中。
Webhook API¶
退信 webhook API 可用于通过自定义脚本记录退信事件。这可以通过读取邮箱、数据库或邮件服务器日志来实现。
| 方法 | 端点 | 说明 |
|---|---|---|
POST |
/webhooks/bounce | 记录退信事件。 |
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
| subscriber_uuid | string | 订阅者的 UUID。需要提供此字段或 email。 |
|
| string | 订阅者的电子邮件。需要提供此字段或 subscriber_uuid。 |
||
| campaign_uuid | string | 发生退信的活动 UUID。 | |
| source | string | 是 | 表示来源的字符串,例如:api、my_script 等。 |
| type | string | 是 | hard 或 soft 退信。目前,这不会影响退信的处理方式。 |
| meta | string | 可选的转义 JSON 字符串,包含关于退信事件的任意元数据。 |
curl -u 'api_username:access_token' -X POST 'http://localhost:9000/webhooks/bounce' \
-H "Content-Type: application/json" \
--data '{"email": "user1@mail.com", "campaign_uuid": "9f86b50d-5711-41c8-ab03-bc91c43d711b", "source": "api", "type": "hard", "meta": "{\"additional\": \"info\"}}'
外部 webhooks¶
stmails 支持从以下 SMTP 提供商接收退信 webhook 事件。
| 端点 | 说明 | 更多信息 |
|---|---|---|
https://stmails.yoursite.com/webhooks/service/ses |
Amazon (AWS) SES | 见下文 |
https://stmails.yoursite.com/webhooks/service/sendgrid |
Sendgrid / Twilio 签名事件 webhook | 更多信息 |
https://stmails.yoursite.com/webhooks/service/postmark |
Postmark webhook | 更多信息 |
https://stmails.yoursite.com/webhooks/service/forwardemail |
Forward Email webhook | 更多信息 |
Amazon Simple Email Service (SES)¶
如果使用 SES 作为您的 SMTP 提供商,自动退信处理是维护您的发件人声誉的推荐方式。以下设置基于 Amazon 的建议。请注意,在继续之前,您的发送域名必须在 SES 中验证。
- 在 stmails 设置中,转到"退信"选项卡并配置以下内容:
- 启用退信处理:
已启用- 软退信:
- 退信计数:
2 - 操作:
无
- 退信计数:
- 硬退信:
- 退信计数:
1 - 操作:
加入黑名单
- 退信计数:
- 投诉:
- 退信计数:
1 - 操作:
加入黑名单
- 退信计数:
- 软退信:
- 启用退信 webhooks:
已启用 - 启用 SES:
已启用
- 启用退信处理:
- 在 AWS 控制台中,转到Simple Notification Service并创建一个新主题,设置如下:
- 类型:
标准 - 名称:
ses-bounces(或任何其他名称)
- 类型:
- 为该主题创建新订阅,设置如下:
- 协议:
HTTPS - 端点:
https://stmails.yoursite.com/webhooks/service/ses - 启用原始消息传递:
已禁用(未选中)
- 协议:
- SES 将向您的 stmails 实例发送请求以确认订阅。刷新页面后,订阅状态应为"已确认"。如果不是,您的端点可能不正确或无法公开访问。
- 在 AWS 控制台中,转到Simple Email Service并点击左侧边栏中的"已验证身份"。
- 点击您的域名并转到"通知"选项卡。
- 在"反馈通知"旁边,点击"编辑"。
- 对于"退信反馈"和"投诉反馈",使用以下设置:
- SNS 主题:
ses-bounces(或您命名的任何名称) - 包含原始电子邮件头部:
已启用(选中)
- SNS 主题:
- 对于使用 stmails 发送的每个
电子邮件地址身份,重复步骤 6-8 - 退信处理现在应该可以工作了。您可以使用SES 模拟器地址进行测试。将它们添加为订阅者,发送活动预览,并确保在达到配置的退信计数后采取了适当的操作。
- 软退信:
ooto@simulator.amazonses.com - 硬退信:
bounce@simulator.amazonses.com - 投诉:
complaint@simulator.amazonses.com
- 软退信:
- 您可以选择禁用电子邮件反馈转发。
导出退信¶
可以通过 JSON API 导出退信:
curl -u 'username:passsword' 'http://localhost:9000/api/bounces'
或直接查询数据库:
SELECT bounces.created_at,
bounces.subscriber_id,
subscribers.uuid AS subscriber_uuid,
subscribers.email AS email
FROM bounces
LEFT JOIN subscribers ON (subscribers.id = bounces.subscriber_id)
ORDER BY bounces.created_at DESC LIMIT 1000;