Help us understand the problem. What is going on with this article?

SendGridで改行が消えた/増えた場合の対応

More than 1 year has passed since last update.

改行が消えている場合

原因

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でエンコードするクラスを別途用意してそちらを使う事で解決が出来た。

FrozenVoice
会社HP: https://miraito-inc.co.jp/
miraito-inc
システムデザインを中心に置いた開発により高品質で使いやすいシステムを提供いたします。業務システム構築、アプリ開発、コンサルティングまで幅広く手がけています。
https://miraito-inc.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした