Top > Blog > Programming

Swift Mailer のテキストメールで改行させない

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」を与えて「無制限(=改行無し)」という事にしました。

1コメント

  1. […] 参考 Laravel – The PHP Framework For Web Artisans. Laravel4、メールの送信 Swift Mailer のテキストメールで改行させない | Javable.Jp […]

コメントの投稿