Laravel3 でのメール送信に Swift Mailer を使っているのですが、標題のとおり、text/plain なメール送信を行なう時に、本文が途中で改行されてしまう現象に出くわしました。
ぐぐっても(見落としただけかもしれませんが)日本語では似たような現象への解決策はヒットしませんでしたし、英語のQAサイトなんかでも「text/htmlで送ると良いよ。本文は nl2br() かけて、改行コードを <br />に変換してね」なんて、それはちょっと違うだろうというような回答ばかりだったので、Swift Mailer のソースを読んでみたら、ちゃんとメソッドが用意されていました。
// メッセージ作成 $message = \Swift_Message::newInstance(); $message ->setCharset($encode) ->setEncoder(\Swift_Encoding::get7BitEncoding()) ->setSubject($subject) ->setFrom($from) ->setTo($to) ->setReturnPath($return_path) ->setBody($body, 'text/plain') ->setMaxLineLength(0); // <--これ
一応ちゃんとドキュメントにも書いてありますね。
ドキュメントには「引数に1000より大きい数を与えると、RFC2822に沿わなくなるので、サーバー側で長い行をカットする事もあるよ」のような事が書いてありますが、たいてい本文の改行位置はメールのテンプレートできちんと指定して整形していたりするので、ここは引数に「0」を与えて「無制限(=改行無し)」という事にしました。
[…] 参考 Laravel – The PHP Framework For Web Artisans. Laravel4、メールの送信 Swift Mailer のテキストメールで改行させない | Javable.Jp […]