今天看到邮件客户端有一个很有趣的功能,叫「已读回执」。在办公场景下还是相当贴心的小细节。这个功能默认邮件协议是没有的,是开发者自己加上的。
已读回执
我实现了一种可行的技术方案:
1.技术原理:使用 <img/>
需要在用户加载邮件时,调用后台的一个接口,以统计已读,调用一次则标记为收件人已读。统计的邮件需要id,建议是:邮件类型+邮件自身id。调用接口一般回选用 js 方法,但很多邮箱客户端处于安全考虑,屏蔽了 js 方法。那就在邮件中嵌入一个看不见的 <img>
标签加载统计地址,以实现统计的目的。
2.注意细节
要做到完全隐藏 <img>
要注意 alt 和 style,需要这样配置:
<img src="..." alt="" style="display: inline-block;width: 0;height: 0"/>
3.方案弊端
但该方案并不完美,目前已知的可能导致统计不精准的场景有:
- 如果你的邮件被标记为垃圾邮件,某些客户端会阻止 img 的加载。
- 如果用户在未看的情况下直接转发,统计数据也不真实。