SMTP経由でメールを送信していて、次のようなトラブルが発生した場合、送信しているメッセージの形式などに原因がある可能性があります。
- 改行されない
- 余分な改行が追加される
- メッセージが途中でカットされる
- 文字化けする
こういった場合、以下のような点に注意してメッセージを生成することで解決する場合があります。
- 改行コードにはCRLFを使用する
改行コードにCRもしくはLFのみを使用すると改行が正しく処理されず、改行されない場合があります。 - 1行あたり78文字以内とする(推奨)。998文字を超えないようにする(必須)
SMTPでは1行あたりの長さに制限があります。長すぎるとカットされる場合があります。ここでの制限値は改行コードを除いた文字数です。 - Content-Transfer-Encodingに8bitを指定しない
歴史的経緯から、メールサーバの中には7bitエンコードしか扱えないものが存在します。このため、Content-Transfer-Encodingに8bitが指定された場合、SendGrid側で自動的にquoted-printableに変換します。この際、余分な改行が追加される場合があります。SendGridへのリクエストでは、7bit相当のエンコードを使用するようにしてください。具体的には、以下、いずれかの対応を行います。- charsetにISO-2022-JPを使用し、Content-Transfer-Encodingで7bitを指定する
- charsetにUTF-8を使用し、MIMEに従いBase64もしくはQuoted-Printableを使用する