今天看到郵件客戶端有一個很有趣的功能,叫「已讀回執」。在辦公場景下還是相當貼心的小細節。這個功能預設郵件協議是沒有的,是開發者自己加上的。
我實現了一種可行的技術方案:
1.技術原理:使用 <img/>
需要在使用者載入郵件時,呼叫後臺的一個介面,以統計已讀,呼叫一次則標記為收件人已讀。統計的郵件需要id,建議是:郵件型別+郵件自身id。呼叫介面一般回選用 js 方法,但很多郵箱客戶端處於安全考慮,遮蔽了 js 方法。那就在郵件中嵌入一個看不見的 <img>
標籤載入統計地址,以實現統計的目的。
2.注意細節
要做到完全隱藏 <img>
要注意 alt 和 style,需要這樣配置:
<img src="..." alt="" style="display: inline-block;width: 0;height: 0"/>
複製程式碼
3.方案弊端
但該方案並不完美,目前已知的可能導致統計不精準的場景有:
- 如果你的郵件被標記為垃圾郵件,某些客戶端會阻止 img 的載入。
- 如果使用者在未看的情況下直接轉發,統計資料也不真實。