WordPress 2.2.3のコメント通知メールをISO-2022-JPに

昨日の記事でWordPress2.2.3のコメント通知メールはしっかりUTF-8で送ってくるが、しばらく放置する、と書いた。ググってみるとWordPressのコメント通知メールが文字化けする、という話もちらちら出るが、どうも勘違いしている人がいるようだ。

  • WordPress 2.2以降ではME版も本家版も、ブログの文字コードと同じ文字コードでコメント通知メールを送るようになっている。日本語のブログの場合はUTF-8でやることになるので、コメント通知メールもUTF-8で送ってくる。このメールはちゃんとContent-Transfer-Encoding: 8bit、Content-Type: text/plain; charset=”UTF-8″で送ってくるので、MIME的には正しいメールであり、この状態が「文字化けしている」のは、単に受け側が単にUTF-8なメールを読める環境にないだけの話。
  • ただしSubjectが長くなると文字化けするバグはあるらしい。その場合本家2.2ならば文字化け実証プラグインを入れると直る。(Nippon2とかでも良いかもしれない。)
  • とはいうものの、携帯なんかで見てる場合はUTF-8は辛い。やっぱりISO-2022-JPで送ってきてほしい。

というわけで、本家2.2.3でも前回やった無理矢理ISO-2022-JPにするパッチを施せばいいだろう、とゴソゴソやるがうまくいかない!

いろいろ調べてみると、前回の記事だけの修正では不十分であることがわかった。いろいろいじくった挙句だったので、class-phpmailer.phpなんかもいじったのが抜けていたようだ。

というわけで、次のようなコードでコメント通知メールが無事ISO-2022-JPで来るようになった。多分ME版でも同じような修正でいけるかな、と思うがよくわからない。ともかく手抜きであることは確かだが、自分にはこれで用が足りるので良しとする。

--- pluggable.php.bak   2007-08-31 03:13:48.000000000 +0900
+++ pluggable.php       2007-09-17 12:01:37.000000000 +0900
@@ -160,6 +160,8 @@
 function wp_mail($to, $subject, $message, $headers = '') {
        global $phpmailer;

+       mb_internal_encoding("UTF-8");
+
        if ( !is_object( $phpmailer ) ) {
                require_once(ABSPATH . WPINC . '/class-phpmailer.php');
                require_once(ABSPATH . WPINC . '/class-smtp.php');
@@ -185,8 +187,10 @@

        $phpmailer->FromName = "WordPress";
        $phpmailer->AddAddress("$to", "");
-       $phpmailer->Subject = $subject;
-       $phpmailer->Body    = $message;
+       $phpmailer->CharSet = "ISO-2022-JP";
+       $phpmailer->Encoding = "7bit";
+       $phpmailer->Subject = mb_encode_mimeheader($subject, "ISO-2022-JP", "B", "\n");
+       $phpmailer->Body    = mb_convert_encoding($message, "ISO-2022-JP", "UTF-8");
        $phpmailer->IsHTML(false);
        $phpmailer->IsMail(); // set mailer to use php mail()

2007/9/22追記:トラックバックを頂いたMOMENTSさんの記事のパッチはFrom:の文字化けまで対応しているので、そちらの方が良いコードだと思います。

2007/10/6追記:WordPress 2.3なら、こっちのプラグインもお試しください。

関連記事

この投稿は 2007/09/17 (月) 12:42 に 未分類 カテゴリーに公開されました。 同じような話題の投稿は、次のタグのどれかを選んでそこから探してください: 。 この投稿へのコメントは RSS 2.0 フィードで購読することができます。 コメントを残すか、ご自分のサイトからトラックバックすることができます。

コメントは1件あります

  1. WordPress 2.2.3 のコメント通知メールの文字コードを変更する…

    WordPress 2.2.3 のコメント通知メールは、本体で使用している文字コードと同じもので送られてきます。ウチの場合は UTF-8 なので、通常のメーラ*1 での内容確認は問題ないのですが、携帯電….

コメントをどうぞ

太字の項目 は必ず入力してください。メールアドレスは 決して 公開されることも配布されることもありません。

次のHTMLタグが使えます:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
URIは省略せずに書いてください。(例: http://www.domainname.com) タグは必ず正しく閉じてください。

改行と段落は自動的に変換されます。

この投稿に関連するコメントをお願いします。オフトピ、攻撃的、適切でないコメントは もしかしたら 編集あるいは削除することがあるかもしれません。

  1. 最近の投稿

  2. タグ

  3.  

    2008 年 11 月
    « 10 月    
     12
    3456789
    10111213141516
    17181920212223
    24252627282930
  4. アーカイブ


  5. あわせて読みたい
  6. メタ情報