生成 List-Unsubscribe 头字段(一键退订)

当人们能一键退订时,他们就不会去点“举报垃圾邮件”了。这个差别,决定了你下一封邮件到底能不能进收件箱。

正在加载工具……

工作原理

  1. 输入你的一键退订网址(URL)。这个地址对每个订阅者都必须不一样,通常在结尾带一段识别码(token)。
  2. 如果你还有一个用来退订的邮箱地址(mailto),把它也加上,作为备用方式。
  3. 把这两行复制进你的发信系统,或者交给你的邮件服务商。它们必须处在 DKIM 签名范围之内(也就是你服务器签名覆盖的那部分邮件内容)。

为什么什么都不用上传

这个页面上的每一步操作,都由运行在你浏览器标签页里的代码完成,用的就是渲染网页的那套引擎。文件从磁盘读进标签页的内存,在那里被处理,再作为下载写回去。它不会被送到任何地方 —— 不会送给我们,也不会送给第三方。

自己动手验证

  1. 打开浏览器的开发者工具(F12),选择“网络”(Network)面板。
  2. 载入你的文件,运行这个工具。
  3. 你能看到的请求只有这些:工具自己的代码 —— 少数几个重型工具还会从公共 CDN 取它们的开源引擎 —— 外加一条发往 loreatec.jp 的小小访问记录(页面地址和标题,仅此而已)。没有一条带着你的文件。

文件不外传的证明 →

常见问题

Gmail 和 Yahoo 到底要求什么?

自 2024 年 2 月起,任何每天给自己用户发大约 5000 封以上邮件的发件人,都必须在邮件头里提供一键退订功能,并在两天内处理退订请求,把垃圾邮件投诉率控制在 0.3% 以下(官方说法是尽量做到 0.1%),并且用 SPF、DKIM、DMARC(你域名下的三条 DNS 记录)证明发件人身份。光有这个头字段还不够,它只是几项要求之一,但却是最容易做对、成本也最低的一项。

为什么我的退订地址必须支持 POST 请求?

因为普通的链接(GET 请求)会被每一个接触到邮件的安全扫描工具和预览工具打开,这样一来用户可能在完全不知情的情况下就被退订了。标准(RFC 8058)用的是带着 List-Unsubscribe=One-Click 这段文字的 POST 请求,扫描工具从来不会发出这种请求。你的地址必须直接处理这个请求:不能有登录页面,不能有确认界面,也不需要会话状态。

能只保留 mailto: 这一种方式吗?

它依然有效,也值得作为备用方式保留,但单靠它满足不了 2024 年的规则,Gmail 也不会为它显示退订按钮。而且它还会让用户多等一轮邮件往返,才能真正被移出名单。

邮件正文里还需要保留退订链接吗?

需要。这个头字段是在可见链接之外附加的,从来不是用来取代它的 —— 而且在日本,《特定電子メール法》要求提供一种收件人真正能看得见的退订方式,美国的 CAN-SPAM 法案也是同样的要求。