しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

SendGrid の Marketing Email API が分かりにくいのでまとめる

SendGrid には普段アプリから使うトランザクションメールの他に、マーケティングメールを送信する機能が用意されています。詳しい説明は公式ブログに任せます。

マーケティングメール機能とは? | ブログ | SendGrid

このマーケティングメールを使うと、よくあるメルマガのような同じ文面のメールを大量に投げることが出来ます。トランザクションメールでは SMTPAPI を使っても最大で 1 回に 1000 アドレスにしか送信出来ないので、用途的にはマーケティングメールを使った方が良い場合があります。

f:id:shiba-yan:20150222011153p:plain

当然ながら管理画面からマーケティングメールを作成出来ますが、ちゃんと API も用意されてるのでアプリから扱うことが簡単に出来るようになっています。

しかし、この API がいまいち分かりにくくて悩んだので、簡単にまとめておきます。

基本的な流れ

Marketing Email API を使ってマーケティングメールをまっさらな状態から送信する場合には、以下のような手順を踏む必要があります。

  1. 送信元アドレスを作成
  2. 送信先リストを作成し、リストにメールアドレスを追加
  3. マーケティングメールのテンプレートを作成
  4. 作成したマーケティングメールと送信先リストを関連付け
  5. 送信スケジュールを設定

送信元アドレスは変更が無ければ最初の 1 回だけで問題ないです。マーケティングメール自体は 1 回送信すると再送は不可能なので、その都度作成する必要があります。

流れが理解出来たところで、実際の API 毎に見ていくことにします。

Sender Address (送信元アドレス)

Sender Address - SendGrid Documentation | SendGrid

メールごとに送信元アドレスをコロコロ切り替える必要はあまりないと思うので、Sender Address の追加に関しては管理画面から行っておくのが楽かもしれません。

その場合には Description の名前だけはメモっておく必要があります。

f:id:shiba-yan:20150222012320p:plain

ここで入力した名前がこの後に Marketing Emails API を呼び出す時に必要になります。

Lists (送信先リスト)

Lists - SendGrid Documentation | SendGrid

Lists API を使うことで、任意の名前の送信先リストを作成することが出来ます。使い道の例としては都道府県でリストを作成しておくと、その地方へのターゲティングが簡単に行えるといった感じでしょうか。

ちなみに API としては Lists となってますが、管理画面的には Recipients と表記されているので間違えないように注意。ぶっちゃけかなり紛らわしいです。

Emails (送信先メールアドレス)

Emails - SendGrid Documentation | SendGrid

送信先リストを作成したら、当然ながら実際に送信するメールアドレスを追加していく必要があります。そこで Emails API を使うとメールアドレスを 1 回で最大 1000 アドレス追加出来るようになっています。

メールアドレスの追加と削除が行えるので、送信先のアドレスが変更された場合には古いアドレスを削除して、新しいアドレスを追加といった処理が必要になります。

Marketing Emails (送信するメールテンプレート)

Marketing Emails - SendGrid Documentation | SendGrid

Marketing Emails API では実際に送信されるメール本文を作成することが出来ます。この時必要な情報が Sender Address で作成した送信元アドレスの名前とメール名、件名や本文になります。

いちいちエディタなどを作るのもめんどくさいと思うので、個人的には Draft 状態のテンプレートを 1 つ用意しておいて、そのテンプレートをクローンするのが楽だと思います。

Categories (マーケティングメールのカテゴリ)

Categories - SendGrid Documentation | SendGrid

Marketing Emails API で作成したメールに対して、複数のカテゴリを追加することが出来ます。カテゴリでグルーピングすることで、統計データをカテゴリごとに確認出来るようになるみたいです。

Recipients (メールテンプレートと送信先リストの関連付け)

Recipients - SendGrid Documentation | SendGrid

これまでに作成した送信先リストとマーケティングメールを関連付けて、実際に送信される送信先リストを設定するのがこの Recipients API です。

1 つのマーケティングメールに対して複数の送信先リストを設定できるので、都道府県ごとの送信先リストを作成しておけば、関東や関西といった都道府県を包含するようなリストを作る必要が無いです。

Schedule (メール送信スケジュール)

Schedule Marketing Emails by API - SendGrid Documentation | SendGrid - SendGrid Documentation | SendGrid

マーケティングメールと送信先リストの関連付けが終われば、後は Schedule API を使って何時送信するのかを設定してあげるだけです。

一応 API 的には絶対時間と相対時間の指定が出来るので、5 分後に送信といった処理も割と簡単に出来ます。まだ詳しく評価はしていないですが、SMTPAPI の日時指定よりは高精度なのではないかと。

使ってみた感想

SendGrid は機能豊富で API がちゃんと用意されていて使い勝手がとても良いのですが、用語の統一と API の命名に難があると思いました…。あと C# クライアントの設計がいまいちなので頑張ってほしい。