ノリブログ?

メールタイトルが文字化け2

カテゴリー:南部ソフトウェア

先日の修正を行っても一定の条件でタイトルが文字化けすることがわかりました。
今のところ文字化けが確認されたメールタイトルは下のようなものです。
なお「書」を除くと文字化けは起こりませんでした.「書」の次の文字を全角スペースにするとスペース直後に「(B」が、半角スペースにすると「!」が表れました。

てすと医院樣 ファイルメーカ御見積書 2006/09/15

メール送信する際にタイトルが文字化け(mb_send_mail)

カテゴリー:南部ソフトウェア

先ほどのエントリに続きまたメールの送信でつまりました。<br />問題はmail関数のheadaerにてReply-To:を挿入しても反映されないというものでした。
問題が行っていたソースを以下に表示します。

$header .="Content-Type: text/plain; charset="ISO-2022-JP"
Reply-To: nanbuwks";
mb_language("Japanese");
mail("address@example.com","subject","string",$header);

メール送信する際にタイトルが文字化け(mb_send_mail)

カテゴリー:PHP

メールの送信を行うプログラムでmb_send_mailによる多重エンコードが原因で文字化けが発生したのでそのときの解決方法をのせておきます。
ソースは以下のようなものでした

$subject = "タイトル日本語";
$subject = mb_encode_mimeheader(mb_convert_encoding($subject, "JIS", "EUC-JP"), "JIS");
$header .="Content-Type: text/plain; charset=\"ISO-2022-JP\"\n";
mb_language("Japanese");
mb_send_mail("address",$subject, mb_convert_encoding("本文", "JIS", "EUC-JP"), $header);
このソースで2行目でタイトルをメール送信用にエンコードしてますが、mb_send_mailは元からsubjectをmime,base64エンコードするように実装されているため、上記のソースでは多重エンコードされていたようです。
なのでmb_send_mail関数をmail関数に変更して多重エンコードを避けると問題は解決しました。

なおメーリングリストにmb_send_mailにはパッチがあたってないバージョンではバグが存在しているとの情報がありました(下記URL参照)
http://ns1.php.gr.jp/pipermail/php-users/2005-November/028156.html