WP-DBManager のメール文字化けを解消する

一日安静だーといいましても、一日中寝ていることもできないものなので、ネットしたりしながらゴロゴロとしているのですが、「wp-dbmanger 文字化け メールタイトル」だなんてクエリで検索があったので、そういえば気持ち悪かったものがひとつあったと思いだし、ちょっと直してみることにしてみました。

つい先日にもご紹介した、 WordPress のデータベースを自動でバックアップ・メール送信までしてくれる素敵すぎるプラグイン「WP-DBManager」ですが、やはり海外で作られたプラグインだけあって日本語のことなんかは考慮されていないつくりになっています。Gmail などで見れば問題はないようなのですが、ぼくが自宅で使用しているメールクライアント「Becky!」でバックアップメールを受け取ると、差出人と件名が壮絶に文字化けしてしまいます。

mojibakemail.gif
↑ こんなかんじ

ファイル自体は正常なのですが、メールボックスに化けに化けた件名のメールが溜まっていくにつれて、気持ちが悪いというかイライラしてきます。

原因自体は単純で、メールヘッダの From と Subject に WordPress の get_bloginfo(‘name’) (ブログ名)が指定されているからで、日本語が含まれたタイトルで運営しているとエンコードの都合で問題が出てしまうだけです。修正の方法も簡単でした。


$mail_subject = sprintf(__(‘%s Database Backup File For %s’, ‘wp-dbmanager’), get_bloginfo(‘name’), $file_date);
$mail_header = ‘From: ‘.get_bloginfo(‘name’).’ Administrator <‘.get_option(‘admin_email’).’>’;

db-manager.php の 94,95 行目と database-manage.php の78,79 行目にある上記のコードから、メールの Subject, From 部分をメールヘッダ用にきちんとエンコードするべく、以下のように置き換えてあげるだけ。

$mail_subject = sprintf(__(‘%s Database Backup File For %s’, ‘wp-dbmanager’), get_bloginfo(‘name’), $file_date);
$mail_subject = mb_encode_mimeheader($mail_subject,”UTF-8″,”B”);
$mail_header = sprintf(‘From: %s Administrator <%s>’, mb_encode_mimeheader(get_bloginfo(‘name’),”UTF-8″,”B”), get_option(‘admin_email’));

mailmojibake2.gif
なおりました。:D

これでWP-DBManager を日本語化していようがいまいが、 どちらでも正常に表示されるはずです。

あくまでぼくの借りている CORESERVER 上でしか試していないので必ず直ります!とはいえませんが、 同じ問題でお悩みの方。一度おためしください :-)

  1. WP-DBManager のメールが文字化けした。原因はプラグインのアップデートか?サイト検索して情報を探す。ありがとう。http://blog.newf.jp/2008/02/19/262/