LoglessLove

愛は常に上書き保存 新ブログ→ http://www.loglesslove.net/blog

全体表示

[ リスト ]

PHPで日本語メールを送る際には、mb_send_mail() では送信者を、PEAR::Mail を使う場合はそれに加えSubjectを mb_encode_mimeheader() でエンコードする。
その場合、件名や送信者名が長いとヘッダと本文の壊れたメールになることがある。

下記は mb_encode_mimeheader() の仕様だ。
string mb_encode_mimeheader ( string $str [, string $charset [, string $transfer_encoding [, string $linefeed [, int $indent ]]]] )
・・・
linefeed
linefeed は EOL (行末) のマーカで、 mb_encode_mimeheader() が行を折りたたむ (» RFC 用語で、 ある一定より長い行を複数行に分割することを言います。 分割する長さは、現在 74 文字に固定されています) 際に利用します。 デフォルトは "\r\n" (CRLF) です。

http://php.net/manual/ja/function.mb-encode-mimeheader.php

上記のように第4引数の $linefeed がデフォルトで "\r\n" となっている。これで件名や送信者名を分割していくわけだが、メーラーによってはCRLFでヘッダを切ってしまう。
その結果ヘッダと本文が壊れる。
#大手のフリーメールだったら大丈夫。

この場合は $linefeed に"\n"を設定してやるとうまくいく。

ただ単純に mb_encode_mimeheader() を使ってメールを送信することは可能だが、実はもっときめ細やかな設定ができるし、した方がいいよ、という話。

この記事に

閉じる コメント(0)

コメント投稿

顔アイコン

顔アイコン・表示画像の選択

名前パスワードブログ
絵文字
×
  • オリジナル
  • SoftBank1
  • SoftBank2
  • SoftBank3
  • SoftBank4
  • docomo1
  • docomo2
  • au1
  • au2
  • au3
  • au4
投稿

.


みんなの更新記事