GitHubのメールは開封チェックを行っていて、開封すると通知が既読になる

GitHubヘビーユーザーなら気づいたことはあると思うが、通知メールを開くをGitHub側の通知が既読になる。

これ、疑問に思ったことは無いだろうか。この記事ではどういう方法で開封チェックを行っているのかを見ようと思います。

TL; DR

  • imgタグで1x1 pixelのトラック機能つき画像を読み込むように設定されている。

Eメールの仕様

Eメールの仕様は昔から存在しており、HTTPの仕様も現在Webで使われているHTML Living Standardに沿っているわけではなく様々な実装があり混沌としている*1

これは、flexとか使いまくって書いたHTMLがうまくレンダリングされていなくてキレている id:cateiru

そのため、もともとJavascriptなどはかけるはずもなくそうなるとfetchなどもできない。

じゃあどうする

imgタグを使用しました。頭いい。

imgタグで画像を読み込むときにURLを叩きます。なので、そのURLにトラッキングIDを仕込んでおけば開封したかがわかるという仕組みです。

GitHub開封チェック

ここにあります。白色の1x1 pxのgif画像であるため見えませんが、Webインスペクタを参照することで見ることができます。

また、背景が黒の場合(スマホアプリなど)では直接画像を見ることができます。

この仕組を利用したサービス

mailtrack.io

mail trackなるものも存在します。全く同じ仕組みです。