Challenge Engineer Life !

エンジニア人生を楽しみたい!仕事や趣味で学んだ技術的なことを書いていくブログです。

SendGridのsubstitutionsで本文を差し替えてみる

SendGridのV3 Mail Send APIではメール本文にあたるcontentは1つしか定義できません。(contentの型が配列で定義されているのはマルチパートでtext/plain,text/htmlを定義するため)
v3 Mail Send API概要 - ドキュメント | SendGrid

1リクエストの中で、どうしても異なる内容のメールを送りたい場合はsubstitutionsで本文を置換できるのでは?というツイートをみかけ、実際に試してみました。Javaなどのライブラリを利用した確認ではなく、JSONそのままでHTTPツールを使ってしまったのですが、以下のような形です。

{
  "personalizations": [
    {
      "to": [
        {
          "email": "kikutaro1@example.com"
	}
      ],
      "substitutions": {
        "%bodytext%": "テキスト1だよ",
	"%bodyhtml%": "HTML1だよ。<b>太字になる?</b>"
      },
      "subject": "メールタイトル1"
    },
    {
      "to": [
	{
	  "email": "kikutaro2@example.com"
        }
      ],
      "substitutions": {
        "%bodytext%": "テキスト2だよ",
	"%bodyhtml%": "HTML2だよ。<b>太字になる?</b>"
      },
      "subject": "メールタイトル2"
    }
  ],
  "from": {
    "email": "kikutaro@example.com",
    "name": "キクタロー"
  },
  "content": [
    {
      "type": "text/plain",
      "value": "%bodytext%"
    },
    {
      "type": "text/html",
      "value": "<html><body>%bodyhtml%</body></html>"
    }
  ]
}

substitutionはタグ定義を行って、そこに値を差し込む機能です。よく宛先とかで「%name%様へ」みたいにするようなやつです。これを使って、textとhtmlの本文をそれぞれ「%bodytext%」「%bodyhtml%」と定義して、差し込んでみました。

特にhtml側は、ちゃんとhtmlが差し込みで反映されるのか?が気になると思いますが、上記のような単純なHTMLである場合、以下のようにちゃんと表示されました。

f:id:kikutaro777:20170530002410p:plain

f:id:kikutaro777:20170530002339p:plain

にほんブログ村 IT技術ブログへ
にほんブログ村 にほんブログ村 IT技術ブログ Javaへ
にほんブログ村