改行が消えている場合
原因
SendGridのデフォルト設定ではプレーンテキストを自動的にHTML化するようになっており、変換時に改行コードが削除されてしまう。
対策
SendGridにログインして、「Setting」→「Mail Settings」→「Plain Content」をONにして”INACTIVE”から”ACTIVE”に変更すればプレーンテキストのまま送信するようになる。
改行が増えている場合
原因
SendGridの設定を変更してプレーンテキストで送信するようにしても、CakePHP3のEmailクラスを利用してメール送信すると1つの改行が2つに増えてしまう事象が発生した。
今回はcharsetを"UTF-8"として送信したいのだが、Emailクラスではcharsetが"UTF-8"の場合にはContent-Transfer-Encodingを"8bit"とするようになっている。
SendGridのサポートページによると、
歴史的経緯から、メールサーバの中には7bitエンコードしか扱えないものが存在します。このため、Content-Transfer-Encodingに8bitが指定された場合、SendGrid側で自動的にquoted-printableに変換します。この際、余分な改行が追加される場合があります。
とのことでこちらの事象が発生している。
対策
Emailクラス自体には本文のエンコード方法(=Content-Transfer-Encoding)を変更する手段がなさそうなので、こちらの記事を参考にbase64でエンコードするクラスを別途用意してそちらを使う事で解決が出来た。