在服务器上处理列表-取消订阅回调

时间:2018-10-03 13:35:37

标签: phpmailer email-headers list-unsubscribe

添加“列表-取消订阅”电子邮件标头时,在服务器端需要对回调进行什么样的处理?

可以在标题中添加mailto-link和web-link,在PHPMailer中看起来像这样:

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

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

那网络链接呢?它是否必须指向一个脚本,该脚本将在那里取消订阅收件人,还是可以仅使用取消订阅形式指向该网页?

1 个答案:

答案 0 :(得分:0)

您可以按照自己喜欢的方式进行处理,但是,您还应该注意List-Unsubscribe-Post标头(在RFC8058中定义),因为它使您不大可能因邮件而意外取消订阅扫描仪。

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

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

您可以在Web服务器中配置重写,以将该URL模式映射到PHP脚本中的相应var,并进行必要的数据库操作以将其从邮件列表中删除。

对于电子邮件来说有点不同:

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

对于最后一种格式,您将配置邮件服务器以发现“ listunsub-”前缀,并使用该前缀将邮件传递到脚本中,该脚本可以提取用户和列表ID。请注意,您不需要主题或邮件正文-地址本身包含您所需要的全部,这意味着收件人不必编写邮件-他们的邮件客户端只需向该地址发送空邮件,然后您将有足够的信息可以使用。