如何追踪电子邮件的已读状态

2018-02-01

尽管电子邮件的地位已经大不如前,但它仍然是工作、学术等场合下最可靠的通讯方式方式。然而,作为一种古老的协议,电子邮件不支持很多现代工具的常见特性,一个最明显的例子就是已读回执。考虑到需要用到邮件交流的往往是一些正式、重要的事项,这其实是一个很大的痛点——你可能并不关心一条随手发出的 iMessage 是否被及时看到,但一定十分在意一封字斟句酌、徘徊已久才发给老师、老板的邮件会不会被淹没在对方的收件箱中。

部分邮件服务商——例如国内的网易、QQ,国外的 Outlook 等——注意到了这一需求,在发信页面中提供了要求「已读回执」的选项。但它们所谓的已读回执功能都需要对方在打开邮件后,手动确认发送回执。且不论这种机制是否会让收件人感到冒犯,它也没有解决最根本的「鸡生蛋和蛋生鸡」问题——如果对方根本就没有打开邮件,也就更不可能给你发送回执了。

QQ 邮箱提供的已读回执选项和收件端效果

那么,有没有什么办法能不依赖特定服务商/客户端,在邮件中实现已读回执,并且做到对收件人透明呢?

(**注:**本文意识到并承认「已读回执」功能在技术层面之外存在潜在的礼仪或伦理争议,但这超出了文章的讨论范围。本文对需求和实现方式的讨论不代表赞成或反对特定的行为,请读者自主判断这些功能的价值和用途并合理利用。)

用 GetNotify 实现邮件追踪:基本操作

GetNotify 就是这样一个邮件阅读状态追踪服务。它的原理很巧妙:当你通过 GetNotify 发送一封邮件时,它会在邮件的末尾插入一个长宽均为 1 像素的白色 png 图片链接;这张图片存储在 GetNotify 的服务器上。因此,只要 GetNotify 的服务器收到了下载这张图片的请求,就表明有人打开了你的邮件。

GetNotify 对邮件的处理方式

GetNotify 的使用方式很简单。注册账号后,在任何客户端中用该注册邮箱发信时,只要在收件人的邮箱地址后加上 .getnotify.com,GetNotify 就会对你的邮件做上述处理,并开始追踪其阅读状态。

例如,如果你想追踪发送给

[email protected]

这一地址的邮件,只需将收件人填写为:

[email protected]

这一操作对收件人是透明的,即对方在邮件中仍然只会看到自己的地址。

如果需要追踪注册邮箱以外的其他邮箱发出的邮件,那么需要事先将其加入 GetNotify 账户的列表中,方法是在用户面板的 My Account 页点击 ADD MORE…,最多可以添加 15 个邮箱。

追加额外的发件邮箱

如此操作后,只要这封邮件被打开阅读,你的邮箱就会收到一封通知邮件,告知其被阅读的时间、客户端的类型和 IP 地址等信息。事实上,这封邮件每被阅读一次,都会被记录在案并向你通知(默认通知前三次,最多可以设置为前 50 次)。

GetNotify 的已读通知

除了邮件通知,你还可以在网页端的 Outbox 页面查看每封通过 GetNotify 追踪邮件的被阅读详情。值得一提的是 Summary 部分,其根据统计收件端的 IP 地址,估测出邮件被多少个不同的用户阅读,由此可以大致判断邮件是否被泄露或转发。

GetNotify 的网页端统计页面

在用户面板的 Preference 页面中,可以进行一些进一步的个性化设置。你可以选择是用发信邮箱接收通知、还是将所有通知都发送到注册邮箱。用于追踪的图片也可以自定义。例如,你可以将默认的 1*1 像素白色图片换为一张透明图片,进一步减少其存在感;或者,也可以上传自己的 logo、头像等作为追踪图片,达到一石二鸟的效果。

GetNotify 设置

需要指出,GetNotify 本身是完全免费的,但存在 5 封/天的使用限额;群发的邮件依其收件人数量计入限额。这一般是够用的(从实践的角度也没有必要追踪每一则通讯),但也可以通过捐赠来提高限额,价格为 12 美元半年或 20 美元一年。捐赠账户还可以追踪收件人的阅读时长。

进阶操作:用手动模式回避隐私风险

当然,任何一个对安全和隐私有所敏感的人,在看到 GetNotify 的原理后都会有所疑问:这相当于将原始邮件交给 GetNotify 修改并转发了一次,**是否会导致邮件内容泄露?**即便 GetNotify 在其隐私政策中作出了具体承诺,留一个心眼也是完全合理且必要的。那么,有什么办法能在实现追踪功能的同时尽可能回避风险呢?

其实,GetNotify 提供了一种「手动流程」。在该流程中,用户不再通过修改收件地址的方式将邮件交给 GetNotify 转发,而是手动生成那张关键的追踪图片、并将其插入到自己的邮件中。这虽然比前一种方法麻烦许多,但也回避了将邮件原文披露给第三方,可以说是在安全性和功能性间达到了较好的平衡。

具体操作方法是:在撰写完毕邮件后,点击 GetNotify 用户面板上的 Track Email 链接,根据提示依次设置接收通知的邮箱、收件人地址、邮件主题(无需与实际主题一致、起到辨识作用即可)、通知次数、图片样式等,然后点击 Get the Tracking Image! 按钮。接着,在下方的一分钟倒计时结束前,将生成的图片拖动到邮件撰写区中,最后正常发出邮件即可。通过这种方式能实现的追踪效果与自动流程是相同的。

GetNotify 的手动流程

引申应用:用 DIY 方式实现近似效果

再退一步说,如果你不愿向 GetNotify 这样的第三方提供任何通讯信息(例如,即使是较为安全的手动流程中,也需要披露你和收件人的邮件地址),其追踪思路也是值得借鉴的。说到底,GetNotify 所采用的追踪机制有两个关键要素:(a) 一张能「无缝融入」邮件正文的图片和 (b) 一个能记录访问者信息的链接。其中 (a) 是再简单不过的,只要用图片编辑软件创建一张 1*1 尺寸的空白或透明图片即可。(如果你足够伸手党,也可以下载这张现成的。)

对于 (b),如果你有一台自己的服务器(例如 VPS 或具有公网 IP 的 NAS),那么只要将图片存储在该服务器上,然后利用其自带的统计功能监测文件的请求记录即可。但对于数量更多的不具有这种条件的用户,也可以通过分步走的方式间接实现类似的效果。

首先,将准备好的图片上传到一个支持直链的图床上,例如微博图床、Imgur、Droplr 等,记下该图片的链接。

然后,通过 Bit.ly 为该图片链接生成一个短链接(需要注册)。之所以选择该服务,是因为它是在各个免费短链接服务中提供分析数据最详尽的。记下得到的短链接,其样式类似于 https://bit.ly/YetAHash

完成上述准备工作后,每当撰写完需要追踪的邮件后,将编辑器切换到 HTML 源码模式,在 </body> 标签之前插入指向上述短链的图片链接 <img src="https://bit.ly/YetAHash" alt="" />,然后发送。

修改邮件的 HTML 代码

这样,就可以通过 Bit.ly 的分析页面判断收件情况了:一旦其显示有用户在发件时间之后访问了这一链接,就基本可以认为该信件被实际打开了。结合 Bit.ly 提供的 IP 位置统计功能,还可以进一步区分自己与收件人的访问记录,避免误判。这固然没有 GetNotify 那种一条龙式的撰写、通知来得方便,但也基本完全避免了隐私泄露的风险。

通过 Bit.ly 后台统计信息判断阅读状态