← 返回博客

List-Unsubscribe:Gmail 退订按钮背后的两个邮件头

Gmail 和 Apple Mail 的退订按钮需要 List-Unsubscribe 和 List-Unsubscribe-Post 两个头支撑。Rovela 在满足条件时自动加上这两个头,退订后自动加入抑制列表。

更新于 2026年10月13日
List-Unsubscribe:Gmail 退订按钮背后的两个邮件头

Gmail 和 Apple Mail 早就在邮件顶部放了退订按钮,点一下就能退订,不用打开邮件正文。这个按钮背后是两个标准的邮件头:List-Unsubscribe 告诉邮件客户端退订地址在哪,List-Unsubscribe-Post 说明支持一键发 POST,不用跳转网页。少了这两个头,Gmail 等平台会用自己的方式拦截退订请求,而且你的发信域名在这些平台眼里的可信度也会打折扣。

Rovela 自动帮你加

只要满足下面四个条件,Rovela 会自动在每封邮件上带这两个头,不需要你手动配置:

  1. 请求里有关联的组织(用 API Key 发信时自动满足)
  2. to 只有一个收件人
  3. 没有 cc、bcc
  4. 系统配置的 BASE_URL 以 https:// 开头

头的内容大概是这样:

List-Unsubscribe: <https://rovela.dev/unsubscribe/eyJ…/one-click>
List-Unsubscribe-Post: List-Unsubscribe=One-Click

每个 token 对应一个发信记录,所以退订链接是一次性的——转发出去的邮件里那个链接只能退订原始收件人,不会误伤转发者。

收件人点退订之后

邮件客户端向 List-Unsubscribe 里的 URL 发一个 POST 请求,Rovela 收到之后:

  1. 往抑制列表里加一条记录,类型是 unsubscribed,来源是 manual
  2. 这个地址以后的发信会被跳过,不再投递,状态变成 suppressed
  3. 如果你配置了 Webhook,会收到 email.suppressed 事件,里面带着 {email_id, to, reason}

你不需要自己维护退订数据库,Rovela 帮你记录,之后的发信请求到了这个地址会自动拦截。

营销邮件 vs 事务邮件

这两个头对营销邮件是必须的:批量活动邮件、促销、通讯,Google 和 Yahoo 在 2024 年初更新的发信指南里已经把这个列为大批量发信的硬要求。

对事务邮件,比如密码重置、订单通知,可以不带,也可以带上,不影响到达率。事务邮件通常是用户主动触发的,退订了也意味着这类关键通知发不出去,所以一般不加。如果你在发的是会员通讯或者类似的周期性内容,建议加上。

字段使用注意

to 里有多个收件人、或者带了 cc/bcc,退订头会被省略——多收件人的邮件没有精确的单人退订语义。如果你在发批量活动邮件,把每封都拆成单独的请求,每封对应一个收件人,这样退订头才会出现。

如果你用的是测试域名或者 BASE_URL 配置的是 http://,头也不会出现。生产环境里这两项通常都没问题;本地开发时如果看不到退订头,先查一下 BASE_URL。

更多接口细节见 发送邮件 API 文档。