两种退订方式
- 邮件中的链接,通常在页脚,会打开你网站上的一个页面。
- 收件箱自带的按钮,它使用
List-Unsubscribe标头。配合List-Unsubscribe-Post: List-Unsubscribe=One-Click和 https 地址,Gmail 和 Yahoo 会通过发送 POST 一步完成退订,无需打开你的网站(RFC 8058)。两个标头都必须包含在邮件的 DKIM 签名中,否则收件箱不会提供一键退订按钮。Gmail 要求每天发送 5,000 封或更多邮件的发件人支持一键退订(Gmail 的发件人指南)。
Proxy Mail QA 对每封营销邮件检查的内容
| 检查 | 失败或警告的条件 |
|---|---|
list_unsubscribe |
没有 List-Unsubscribe 头(不通过),或者它只有一个电子邮件地址或普通 http 地址(警告) |
one_click_unsubscribe |
没有带 https 地址的 List-Unsubscribe-Post 头,或者邮件的 DKIM 签名没有同时覆盖两个 List-Unsubscribe 头,因此收件箱的按钮无法一步退订(警告) |
unsubscribe_link |
邮件本身没有退订链接或邮件偏好设置链接 |
after_unsubscribe |
它在该地址退订其发件人之后才到达 |
收件箱会为每封邮件显示两种退订链接,并提供 打开链接 和 复制。
测试一下
- 用一个新地址 注册并选择接收邮件,然后触发一封营销邮件,比如新闻简报。
- 查看邮件:上面的检查会显示在收件箱中。
- 在你自己的浏览器中用该链接 退订。
- 在那封邮件上 选择标记为已退订,如果已排队的营销邮件可能还会到达,可以设置宽限期(1 小时、1 天)。收件箱会提示它正在监视该发件人的营销邮件,并提供 停止监视。
- 触发更多邮件:新的新闻简报不应再到达,而收据或密码重置邮件应该到达。
此后到达的任何营销邮件都会在收件箱和 Accounts 页面显示警告,并提供 打开邮件,Reports 也会列出它。
在测试中
const link = await qa.waitForLink(address, { type: 'unsubscribe', since: signedUp });await page.goto(link);await page.getByRole('button', { name: 'Unsubscribe' }).click();await qa.markUnsubscribed(address, { service: 'acme.com' });
// Trigger the next campaign, then: no marketing for 10 minutes, receipts allowed.await qa.expectNoEmail(address, { since: new Date(), category: 'marketing', timeout: 600 });type: 'list_unsubscribe' 则返回头中的一键退订地址:像收件箱按钮那样向它 POST List-Unsubscribe=One-Click。之后,在另一个测试中或下一次真实营销活动之后,checkUnsubscribe(address) 会列出之后到达的营销邮件。智能体使用 kind 为 unsubscribe 的 wait_for_link,以及 mark_unsubscribed 和 check_unsubscribe;test_unsubscribe 提示词会逐步引导完成。