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

Gmail 和 Apple Mail 早就在邮件顶部放了退订按钮,点一下就能退订,不用打开邮件正文。这个按钮背后是两个标准的邮件头:List-Unsubscribe 告诉邮件客户端退订地址在哪,List-Unsubscribe-Post 说明支持一键发 POST,不用跳转网页。少了这两个头,Gmail 等平台会用自己的方式拦截退订请求,而且你的发信域名在这些平台眼里的可信度也会打折扣。
Rovela 自动帮你加
只要满足下面四个条件,Rovela 会自动在每封邮件上带这两个头,不需要你手动配置:
- 请求里有关联的组织(用 API Key 发信时自动满足)
to只有一个收件人- 没有
cc、bcc - 系统配置的
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 收到之后:
- 往抑制列表里加一条记录,类型是
unsubscribed,来源是manual - 这个地址以后的发信会被跳过,不再投递,状态变成
suppressed - 如果你配置了 Webhook,会收到
email.suppressed事件,里面带着{email_id, to, reason}
你不需要自己维护退订数据库,Rovela 帮你记录,之后的发信请求到了这个地址会自动拦截。
营销邮件 vs 事务邮件
这两个头对营销邮件是必须的:批量活动邮件、促销、通讯,Google 和 Yahoo 在 2024 年初更新的发信指南里已经把这个列为大批量发信的硬要求。
对事务邮件,比如密码重置、订单通知,可以不带,也可以带上,不影响到达率。事务邮件通常是用户主动触发的,退订了也意味着这类关键通知发不出去,所以一般不加。如果你在发的是会员通讯或者类似的周期性内容,建议加上。
字段使用注意
to 里有多个收件人、或者带了 cc/bcc,退订头会被省略——多收件人的邮件没有精确的单人退订语义。如果你在发批量活动邮件,把每封都拆成单独的请求,每封对应一个收件人,这样退订头才会出现。
如果你用的是测试域名或者 BASE_URL 配置的是 http://,头也不会出现。生产环境里这两项通常都没问题;本地开发时如果看不到退订头,先查一下 BASE_URL。
更多接口细节见 发送邮件 API 文档。