GitHubヘビーユーザーなら気づいたことはあると思うが、通知メールを開くをGitHub側の通知が既読になる。
これ、疑問に思ったことは無いだろうか。この記事ではどういう方法で開封チェックを行っているのかを見ようと思います。
TL; DR
img
タグで1x1 pixelのトラック機能つき画像を読み込むように設定されている。
Eメールの仕様
Eメールの仕様は昔から存在しており、HTTPの仕様も現在Webで使われているHTML Living Standardに沿っているわけではなく様々な実装があり混沌としている*1。
は????????? pic.twitter.com/bFm2uM1NWJ
— かている (@cateiru) 2022年3月18日
これは、flexとか使いまくって書いたHTMLがうまくレンダリングされていなくてキレている id:cateiru
そのため、もともとJavascriptなどはかけるはずもなくそうなるとfetchなどもできない。
じゃあどうする
img
タグを使用しました。頭いい。
img
タグで画像を読み込むときにURLを叩きます。なので、そのURLにトラッキングIDを仕込んでおけば開封したかがわかるという仕組みです。
GitHubの開封チェック
ここにあります。白色の1x1 pxのgif画像であるため見えませんが、Webインスペクタを参照することで見ることができます。
また、背景が黒の場合(スマホアプリなど)では直接画像を見ることができます。
この仕組を利用したサービス
mail trackなるものも存在します。全く同じ仕組みです。