メールサービスのSendGridを触ってみました。今回はSendGridのメール送信の機能について書いていきます。

SendGridでメールを送信するにはSMTPを使うSMTP APIとHTTPを使うWeb APIの2つの方法があります。

SMTP APIで送信

SMTPのプロトコルを使ってSendGridに情報を伝達する方式で、X-SMTPAPIという独自ヘッダを使うことで送信メールのカテゴリやトラッキング用の任意の属性をセットしたり、受信者に応じたパーソナライズをすることができます。X-SMTPAPI以外は通常のSMTPを使ったメール送信になるので、OutlookやThunderbird等の任意のメーラーを使ったメール送信ができるのが利点です。

SMTPのホストには”smtp.sendgrid.net”、ポート番号は25, 465, 587が利用可能です。ユーザ名、パスワードはSendGridのクレデンシャルをそれぞれ設定するだけでOKです。詳細はリファレンスを参照。

X-SMTPAPIヘッダについて

送信するメールの属性値をセットしたり受信者に応じたパーソナライズをすることができるSendGridのSMTP独自拡張ヘッダになります。ヘッダの値は以下のようなJSONになります。

この場合は送信するメールのカテゴリを”HogeCategory”、トラッキング用の変数としてHOGE_KEY=fugavalue、本文に”%key%”という文字列があれば”hello”に置き換えて、unixtimestampで1439813847の時間になったらメールを送信する、という設定になります。
X-SMTPAPIのリファレンスはこちら

ちなみにWeb APIでもX-SMTPAPIの設定をすることが可能です。

SMTP APIのサンプル

Python+SMTP APIで送信してみます。PythonのSendGrid SMTP APIのライブラリであるsendgrid/smtpapi-pythonを使います。X-SMTPAPIヘッダのJSON生成を補助してくれるライブラリになります。サンプルは以下になります。

Web APIで送信

HTTPで送信する方式になります。以下のようなHTTPリクエストを投げることでメールを送信できます。

リファレンスにPlay Groundもあるので、確認する際はそちらでリクエスト/レスポンスを確認するのが楽です。

また、ファイルを添付する場合は、multipart/form-data形式で送信する必要があります。