SendGridのOpenのステータス表示について

SendGridの管理画面をみていると、ActivityのTypeの欄にOpenとかあるんですよね。これをどうやって判別しているのか気になったので少し調べてみました。

SendGrid Status

SMTPを使ってテキストメール形式で送信しているのですが、送信されるメールのContent-typeがmultipart/alternativeになっていました。

multipart/alternativeとはhtmlのmultipart/form-dataのようにboundaryで区切ってtextメールとhtmlメールなどを同時に送れるようにしたものです。

メールデータ

ヘッダーの一部とbody部分はこのようになっていました(データの一部を書き換えています)

Content-typeのヘッダー部分

Content-type: multipart/alternative; boundary="----------=_1526296788-24783-1111"

body部分

------------=_1526296788-24783-1111
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: base64

44GT44KT44Gr44Gh44Gv
------------=_1526296788-24783-1111
Content-Type: text/html; charset="UTF-8"
Content-Disposition: inline
Content-Transfer-Encoding: base64

PGh0bWw+PGJvZHk+DQo8cD7jgZPjgpPjgavjgaHjga88L3A+DQoNCjxpbWcgc3JjPSJodHRwczovL3UwMDAwMDAwLmN0LnNlbmRncmlkLm5ldC93Zi9vcGVuP3Vwbj14eHh4eHh4eHgteHh4eHh4eHh4eHh4eHh4eHh4eHgteHh4eHh4eHh4eHh4eHh4eHh4eC14eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHgteHgteHh4eHh4eHh4eHh4LXh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eC14eHgteHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4LXh4eHh4LXh4eHh4eHgteHgiIGFsdD0iIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBib3JkZXI9IjAiIHN0eWxlPSJoZWlnaHQ6MXB4ICFpbXBvcnRhbnQ7d2lkdGg6MXB4ICFpbXBvcnRhbnQ7Ym9yZGVyLXdpZHRoOjAgIWltcG9ydGFudDttYXJnaW4tdG9wOjAgIWltcG9ydGFudDttYXJnaW4tYm90dG9tOjAgIWltcG9ydGFudDttYXJnaW4tcmlnaHQ6MCAhaW1wb3J0YW50O21hcmdpbi1sZWZ0OjAgIWltcG9ydGFudDtwYWRkaW5nLXRvcDowICFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206MCAhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6MCAhaW1wb3J0YW50O3BhZGRpbmctbGVmdDowICFpbXBvcnRhbnQ7Ii8+DQo8L2JvZHk+PC9odG1sPg0K

最初の部分

44GT44KT44Gr44Gh44Gvの部分をBase64でデコードするとこんにちはになります。これは元々送っていたテキストのメール内容と同じです。

最後の部分

最後の部分をBase64でデコードすると

<html><body>
<p>こんにちは</p>

<img src="https://u0000000.ct.sendgrid.net/wf/open?upn=xxxxxxxxx-xxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxx-xx-xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxx-xxxxxxx-xx" alt="" width="1" height="1" border="0" style="height:1px !important;width:1px !important;border-width:0 !important;margin-top:0 !important;margin-bottom:0 !important;margin-right:0 !important;margin-left:0 !important;padding-top:0 !important;padding-bottom:0 !important;padding-right:0 !important;padding-left:0 !important;"/>
</body></html>

このように文章の後に何かついていたので、https://u0000000.ct.sendgrid.net/wf/openにアクセスしてみるとgifの見えない画像でした。

おそらくメールごとにupnのパラメータを変えてそれぞれのパラメータでアクセスがあったかどうかをみて、アクセスがあればOpenのTypeにしているのだと思います。

テキストメール形式で送信する設定

トラッキングもいらないしHTML形式で送りたくないなという場合は、よくある質問 – メール改行トラブル編にテキストメールでの設定方法が書いてあります。