2007/9/17 追記:下記のパッチでは修正が足りずうまくいきません。class-phpmailer.phpも修正する必要があります。本家版2.2.3で試したパッチを別記事に書きましたので、そちらを参考にしてください。(そっちはpluggable.phpの修正のみでいけるはずです。)
WordPress ME 2.2.1でコメント通知メールの文字コードがおかしい件、どうせ自分のブログなんだし、適当に決め打ちのコードでなんとかしちゃえばいいや、というノリで無理矢理なんとかしてしまった。(コードをきれいに載せることができていないので、必要な人はソースを見てください。)
--- pluggable.php.save 2007-07-06 21:28:51.000000000 +0900
+++ pluggable.php 2007-07-06 21:36:28.000000000 +0900
@@ -186,6 +186,9 @@
$phpmailer->FromName = "WordPress";
$phpmailer->AddAddress("$to", "");
$phpmailer->Subject = wpj_mimeheader($subject);
+ if (function_exists('mb_convert_encoding')) {
+ $message = mb_convert_encoding($message, "ISO-2022-JP", "UTF-8");
+ }
$phpmailer->Body = $message;
$phpmailer->IsHTML(false);
$phpmailer->IsMail(); // set mailer to use php mail()
@@ -443,7 +446,7 @@
$message_headers = "MIME-Version: 1.0\n"
. "$from\n"
- . "Content-Type: text/plain; charset="" . get_option('blog_charset') . ""\n";
+ . "Content-Type: text/plain; charset=iso-2022-jp\n";
if ( isset($reply_to) )
$message_headers .= $reply_to . "\n";
--- functions.php.save 2007-07-01 16:32:47.000000000 +0900
+++ functions.php 2007-07-05 22:26:23.000000000 +0900
@@ -1528,7 +1528,7 @@
function wpj_mimeheader($mine) {
if(function_exists('mb_encode_mimeheader')) {
- return mb_encode_mimeheader($mine);
+ return mb_encode_mimeheader($mine, "ISO-2022-JP", "B", "\n");
} else {
return $mine;
}
要するに、
- ヘッダには決め打ちでcharset=iso-2022-jpを入れる。ASCIIのみのメールでこれが入っていても別に実害ないし、まー他のコードでコメント付けてこられてもどうせ読めないから。
- コメント本文もmb_convert_encodingでUTF-8からiso-2022-jpに決め打ちでコード変換。
- メールヘッダもmb_encode_mimeheaderでiso-2022-jpに決め打ちでコード変換する。
無茶苦茶なやり方だが、自分のサイトの勝手でしょ、とか開きなおってる次第(笑)。
明日から、土日月と会社の研修。折角の週末、WordPressのコード眺めたりしてまったり過ごしたかったが、かなわず。ちょっと残念。(だからこんな手抜きコードを仕込んだというわけではなく、単に面倒だからである。)