SendGridの管理画面をみていると、ActivityのTypeの欄にOpenとかあるんですよね。これをどうやって判別しているのか気になったので少し調べてみました。
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形式で送りたくないなという場合は、よくある質問 – メール改行トラブル編にテキストメールでの設定方法が書いてあります。