SendGridのTransactionalTemplateがわからない

表題の通り。

■ 環境

  • SendGrid
  • Node.js 8.10.0

■ TransactionalTemplate

APIを使用し、SendGrid経由でメールを送りたい。APIの使い方を見たりしていてSendGridには”Template“なる機能があることを知ったので試してみた。しかし思い通りの内容のメールで送る事ができなかった…。

sendgrid-nodejs
https://github.com/sendgrid/sendgrid-nodejs/blob/master/packages/mail/USE_CASES.md

テンプレートを適用して送信する
https://sendgrid.kke.co.jp/docs/Tutorials/A_Transaction_Mail/using_templates.html

上記URLを参照して試していたのだが、下記のような現象が…。もちろん自身のやり方がまずいのであろうが

1. ActiveなversionのTemplateが適用されない

APIを使ってメールを送ってみると、デフォルトの内容で送られてきた。反映されるのにタイムラグがあるのかと思って少々時間をおいて実施してみたが変わらず。いくつか試している中で下記のようにコメントアウトしたらTemplateに設定した内容で送られた。

const msg = {
  to: 'recipient@example.org',
  from: 'sender@example.org',
  subject: 'Hello world',
  // text: 'Hello plain world!',
  // html: '<p>Hello HTML world!</p>',
  templateId: '13b8f94f-bcae-4ec6-b752-70d6cb59f932',
  substitutions: {
    name: 'Some One',
    city: 'Denver',
  },
};

サンプルはGitHubに上がっていたものをそのまま使わせてもらっている。本文の箇所(“text“/”html“)をコメントアウトするとなぜか送る事ができた…。”subject“もTemplateで指定しているので不要だったのだが残しておいた。

2. 編集後の反映タイミングがわからない

Templateを編集した後でAPI経由でメールを送ると、編集前の状態で送られてしまう。これもタイムラグがあるのかと思い少々時間をおいて再度実施してみたが反映されず。別versionのものを作成し、”ACTIVE“を切り替え再度戻して、とやったところ反映された…。

他にも何点かよくわからない点があったが少々急ぎでいろいろ試したかったので、ここまでやったところでTemplateは一旦諦めた。後日時間がちゃんと取れる時に再挑戦することにする。

以上。

SendGridAPI

表題を`curl`で実行したい。

■ 環境

  • SendGrid
  • Linux
  • Mac OSX El Capitan

■ SendGrid

下記の言語はライブラリが用意されている。

  • C#
  • Go
  • Java
  • NodeJS
  • PHP
  • Python
  • Ruby

今回は単なるシェルスクリプトの中で実行したかったので`curl`コマンドでメールを送りたい。

cURL Examples for Common Use Cases
https://sendgrid.com/docs/Classroom/Send/v3_Mail_Send/curl_examples.html

API KEYはSendGridの管理画面、『Settings > API Keys』から発行する。

https://app.sendgrid.com/settings/api_keys

発行したAPI KEYを下記の”YOUR_API_KEY“の箇所と置換する。

--header 'authorization: Bearer YOUR_API_KEY' \

Bearer “は削除していけない。

宛先や件名、本文は下記ドキュメントの『要求ボディパラメータ』を参照して編集した。

V3 Mail Send API 概要
https://sendgrid.kke.co.jp/docs/API_Reference/Web_API_v3/Mail/index.html

最終的には下記のようになった。

curl \
  --silent \
  --request POST \
  --url https://api.sendgrid.com/v3/mail/send \
  --header "Authorization: Bearer ${SENDGRID_APIKEY}" \
  --header 'Content-Type: application/json' \
  --data "${SENDGRID_REQUEST}"

本文や宛先は動的に生成したかったのと、別の場所で定義したかったのがあり”${SENDGRID_REQUEST}“変数に入れた。これでできたので満足。

以上。