我希望在我所发送的邮件底部提供一个单击“取消订阅”链接。
显然,许多垃圾邮件扫描器会扫描电子邮件,并遵循电子邮件中发现的任何链接以扫描它们的内容以查找恶意软件。到目前为止,我使用的解决方法是:
如果通过HTTP GET请求“取消订阅”页面,则呈现一个简单的确认表单和一些JS,在页面加载时提交表单;如果通过HTTP POST请求“取消订阅”页面,则我们退订用户。
这种方法,用户通常只需要单击表单一次即可获得“您已被退订”的消息。如果他们已禁用JS,则仍可以手动提交确认表单。
现在的问题是,某些扫描程序(如Office365的ATP)将打开页面并在其中执行JS。通过执行JS,他们提交表单并导致用户自动退订。
我考虑添加自动提交JS逻辑检查:
不要针对特定的用户代理进行自动提交
不要针对特定的客户端IP范围进行自动提交
触发鼠标移动事件上的自动提交
但这些看起来都像脆弱的方法,最多只是一些hack方式,随着电子邮件扫描器改变其策略而注定会失败。
我相信在我之前,这个问题已经困扰了很多人。除了放弃单击功能外,是否有已知的合理解决方法?
附注:我已经添加了对RFC 8058的支持,但用户仍然会点击页脚中的链接。