.NET で SendGrid API を使う (2)

クロスワープの大鷲です。

今回は Marketing Campaigns API を使うまでの準備について説明します。

送信までに必要なもの

Marketing Campaigns の中核となるのは Campaigns API です。
が、この API を呼ぶ前に、いろいろと他のものを登録しておく必要があります。*1
ざっと挙げると

  • 受信者のカスタムフィールド
  • 受信者
  • 受信者のリスト
  • 送信者

の 4 つです。
それぞれ簡単に説明しましょう。

カスタムフィールド

受信者ごとにメールの本文をカスタマイズすることができます。
例えば、本文に

こんにちは、[%name%] さん。

と書いたのを、送信時に

こんにちは、大鷲 さん。

と置き換えるような機能があります。

このような機能を使う場合、Custom Field API を使って、"name" というカスタム フィールドをあらかじめ登録しておく必要があるわけです。

ちなみに、だいたいの API は、既に存在するリソースを PATCH でなく POST で送信しても上書き更新されますが、カスタム フィールドは既にあるものを POST するとエラーになりました。
そのため、登録済みかどうかを先に調べてから追加する必要があります。

受信者

Recipient API を使って、あらかじめ受信者を登録しておく必要があります。
Marketing Campaigns API は、この登録数によって課金されますので、最重要 API と言っても過言ではありません。

この API を呼ぶにあたっては、先に登録したカスタム フィールドのデータを追加してやらなければなりません。
以下の例では、pet と age がカスタム フィールドです。

{
  "email": "jones@example.com",
  "last_name": "Jones",
  "pet": "Indiana",
  "age": 25
}

.NET のオブジェクトをそのままシリアライズしてこういう結果を得ようと思うと、うまく行きません。
普通のオブジェクトではメンバー名を動的に設定することができないからです。
このような場合には dynamic なオブジェクトを使う必要があります。
例えば JSON.NETJObject などがそれにあたります。

受信者のリスト

受信者を登録したら、それをリストにまとめる必要があります。
まずリストを作り受信者をリストに追加します。

受信者をリストに登録する際には、受信者の ID が必要です。
これは、受信者を登録した際に返される persisted_recipients の値を使うことができます。

送信者

メールの送信者情報を SendGrid の管理画面から登録しておく必要があります。
送信者の実在性を担保し、スパムメールが送信されるのを防ぐためです。

この部分も API によって自動化することは可能なのですが、その API が公開されたのが開発終了後だったため、現在はあらかじめ管理画面から登録するという運用になっています。
今後の改善で自動化を検討したいと思います。

まとめ

キャンペーンを登録する準備が出来ました。
次回はキャンペーンの登録を行います。

*1:トランザクション メール機能であれば、こうした事前登録は一切必要なく、一度の API 呼び出しですべて完結できるのですが……。