SendGridでメールを送信する時に改行が上手くいかない時の対処法

SendGridでメールを送信する時に改行が上手くいかない時の対処法

SendGridを介してメールを送信する時に、Contentをplain/textにしていると意図した改行がなされないとことがある。その時の対処法を記す。
対処法と言っても、非常に簡単な設定を行うだけである。

生じる問題

例えば、以下のような改行コードを入れた文字列の場合に生じる(SendGridのAPIを叩くためのJSONの一部を抜粋)

Content: []Contents{{
       Type:  "text/plain”,       
       Value: "アイウエオ\nカキクケコ\nサシスセソ",}},

この場合、メールで送信されてくる中身は、以下のようなものを期待している

expected_mail_screen.png

しかし、デフォルトの設定のままだと以下のような内容が送信されてくる

actual_mail_screen.png

問題が生じる原因

SendGridの Plain Content: Convert your plain text emails to HTML .という設定が、OFFになっているために生じる。(Settings > Mail Settings > Plain ContentのACTIVE)
これは、その設定の説明の通り、plain text のメールをSendGridがHTMLに変換してくれるというものである。
これがあるために、改行コードが無視されたHTML形式に変換されメールが送信されるので、先ほどのような問題が生じる。

plain_text_off.png

解決策

Plain Content: Convert your plain text emails to HTML (Settings > Mail Settings > Plain ContentのACTIVE)の設定を「ON」にすれば良い。
若干ややこしいが、「OFF」にしていると、plain text のメールをSendGridがHTMLに自動で変換されるようになってしまう。

plain_text_on.png

関連記事

Go言語でSendGrid Web API v3を使って、メールを送信する

GCE上のGoのコードからSendGridを使用してメールを送信

  • Qiitaでも同一の投稿をしている

qiita.com