我们构建时事通讯模块,并向会员发送电子邮件。环境是 LAMP。有没有办法知道会员是否打开了邮件?我听说如果“php”来源放置图像,最好的方法是什么?
5 回答
最终,显然没有万无一失的方式来获取通知,因为无法保证让电子邮件客户端以某种方式回复;电子邮件客户端可以设置为仅将传入的电子邮件解释为 ASCII 文本,仅此而已,您对此无能为力。
然而; 在大多数情况下,如果您正在向希望收到电子邮件的用户发送电子邮件,则可能会为您的源地址打开 HTML 呈现和内联图像,因此使用内联 IMG 标记并监视对引用文件的访问(显然使用一些- 参考中的用户唯一 ID)应该给你最好的。
无论如何,您永远无法假设如果您没有收到通知,这意味着用户没有看到电子邮件。
是的,有一种称为已读回执的标准机制 ( RFC 3798 )。它由所有现代邮件客户端实现,用户可以选择发送(或不发送)收据。
未经用户同意,也有各种非标准的诡计,我不会详述。
编辑:
它应该如下所示(使用内置的 PHP邮件功能):
mail("foo@foo.com", "Let me know if you get this", "Important message", "Disposition-Notification-To: sender@sender.com\r\n");
没有万无一失的方法可以做到这一点,因为您不是控制电子邮件客户端的人。许多人非常重视他们的隐私,以防止阅读回执、网络信标和所有其他可用于检测阅读的技巧(人们可以关闭阅读回执、阻止图像、防止未经请求的传出连接等等)。
这当然是我的观点,但我相信您以错误的方式解决问题。与其试图强迫用户让你知道他们是否已经阅读了电子邮件,不如让它值得他们花时间。拥有这些信息显然对您有一些好处(否则为什么要这样做?),因此您可以分享这些好处并确保这是用户的决定。
这样,您就可以将关系从战场变成伙伴关系(双赢)。
检查电子邮件是否已被阅读的常用方法是网络信标,它通常是从您的服务器加载的 1x1 像素的小图像,它可以跟踪图像何时被加载,因此电子邮件已被阅读。
但是,这并不能保证有效,因为许多电子邮件客户端会阻止其电子邮件中的图像,或者您的读者可能正在使用纯文本电子邮件客户端。
每封电子邮件都有一个与用户帐户(或数据库行)相对应的唯一命名图像,当加载或访问该图像时,您可以看到哪个用户打开了电子邮件。这依赖于用户接收 HTML 电子邮件。