在服务器上处理 List-Unsubscribe 回调

Handling of List-Unsubscribe callbacks on server

添加 'List-Unsubscribe' 电子邮件 header 时,server-side 需要对回调进行何种处理?

可以将 mailto-link 和 web-link 添加到 header,在 PHPMailer 中它可能如下所示:

$email->AddCustomHeader("List-Unsubscribe: <mailto:unsubscribe@example.com?subject=Unsubscribe>, <http://example.com/unsubscribe.php?unsubscribeid=$id>");

但是 mailto-address 是否必须以某种方式自动处理取消订阅,或者如果请求只是发送到一个由手动处理 unsubscribe-requests 的列表管理员经常检查的收件箱是否可以? ?

那么 web-link 呢?它是否必须指向一个脚本,该脚本将在那里取消订阅收件人,或者它是否可以仅指向带有取消订阅表单的网页?

您可以随心所欲地处理它,但是,您也应该注意 List-Unsubscribe-Post header(在 RFC8058 中定义),因为它使您更不容易发生邮件扫描程序导致的意外退订。

我真的建议自动处理这些。这并不难。 list-unsubscribe 中的 URL 应该完全是 self-contained,也就是说,您应该嵌入所有需要的数据(例如唯一用户标识符的哈希值和邮件列表 ID)进入 URLs,因此对于 HTTP,您可以使用:

'<https://www.example.com/listunsub/' . $userid .'/' . $listid . '>'

您可以在您的 Web 服务器中配置重写,以将 URL 模式映射到您的 PHP 脚本中的适当变量,并执行必要的数据库操作以将它们从邮件列表中删除。

电子邮件有点不同:

'<mailto:listunsub-' . userid . '-' . $listid . '@example.com .'>'

对于最后一种格式,您可以配置您的邮件服务器以发现 'listunsub-' 前缀,并使用它来将消息通过管道传输到可以提取用户和列表 ID 的脚本中。请注意,您不需要主题或消息 body - 地址本身包含您需要的所有内容,这意味着收件人不必写消息 - 他们的邮件客户端可以简单地发送一条空消息到地址,您将有足够的信息来使用。