Movable Type 3.15でのメール通知
最初、学術・研究・軍事の目的で開発、利用されてきたインターネットが学校や職場で使えるようになり、さらにコンピュータを私生活でもよく使う人は早くからインターネットを導入してきた。
そのうち一家に一台の PC になり、いまや1人1台、いや1人でn台のコンピューティング環境を持つ、というのも決して珍しくなくなり、インターネット利用のすそ野は大きく広がった。
1人n台というのは大げさな話ではなく、自宅の PC でもちろんインターネット接続するだけでなく、今や携帯電話、PDA でも接続が可能だ。車の中でカーナビ経由で使えるインターネットはもっと普及するだろうし、いずれデジタルカメラなど普段持ち歩くものにも標準装備されるかもしれない。
インターネットがコンピュータ好きな人たちの間で使われているときはまだ「パソコン通信」のイメージが世間一般には多く、今ほどインフラが整っているわけでもなく、もちろんインターネットバンキングなどもなかった。それが今やほとんどのサービスがインターネットで受け連れられるようになり、この傾向はますます進むと思われる。
それにつれて自宅にダイレクトメールが舞い込む様にインターネットでも広告産業がにぎやかになってきた。それだけ生活に根ざした一つの通信手段になってきたからだと思う。
当初はメールとして送られてくる広告 ( スパムメール ) だけだったのが、最近はブログブームを反映してかブログに着くコメントやトラックバックまで利用して広告を貼り付けにくるほどだ。
僕がこの New York Watch のブログシステムとして利用している Mobable Type もそういったスパムコメントやスパムトラックバックに対応するため、大きなバージョンアップがあった。それが version 3.0だ。
ここ New York Watch でもいろいろなスパムが投稿されるので、早くから3.0をインストールし、さらにver 2.6x の時代からコメントが投稿されればすぐにメールで僕のところに通知されるように設定して注意を払ってきた。
ところが 2.6X から ver 3.11-ja にインストールし直したときに、なぜかメール通知機能が働かなくなってしまった。
このときはあまり詳しく調べず、単に google で検索してみると「2.6Xなど過去の Movable Type から lib/MT/Mail.pm を抜き出して、上書きすれば動作した」という他のユーザの書き込みが見つかった。そこでこのときは対処方としてこれに従って同じ事をやってみた。
もちろんこれで動くようになったのだが、今回、3.11-ja から3.15-ja へとアップグレードをするとやはりコメント通知機能が動作しなくなった。
そこで今回はもうちょっと詳しく調べてみようとググって見ると、どうやらこの現象は日本人にだけ起きていることがわかった。米国ではこの問題は報告されていないのだ。
今回のアップグレードでもやはり Mail.pm というモジュールが書き換えられているので、このファイルをエディタで開いてみて納得。
日本語環境で使用している場合に、メールの From: や Subject: の部分をエンコードしている部分があり、どうやらこのエンコードが正しく行われていないためにメールが送出できなくなっているようだった。
ググって見るとこれに気が付いている人たちがすでに対処法をのせている。僕が参照させてもらったのは「MT3.0以降でのメール文字化け修正」というブログのエントリだ。
こちらでは、文字化けという形で問題が出ているが、僕の場合は sendmail か Postfix とのハンドシェイクで失敗しているようでそのためにメールが送られない、とそれぞれ現象は違うがこの方の修正方法で僕の方も正しく動くようになった。
修正部分というのは lib/MT/Mail.pm ( 3.15-ja 版 ) の41行目の
$hdrs->{Subject} =~ s/\r?\n/\r\n/g;
という行をコメントアウトしてしまうこと。具体的には行頭に「#」を加えるだけだ。
すると付近の行のイメージはこんな感じになる。
if ($mgr->DefaultLanguage eq 'ja') {
my $enc = $mgr->PublishCharset;
$body = MT::I18N::encode_text($body,$enc,'jis');
$hdrs->{Subject} = MT::I18N::encode_text($hdrs->{Subject}, undef, 'jis');
$hdrs->{Subject} = Jcode->new($hdrs->{Subject}, 'jis')->mime_encode;
# $hdrs->{Subject} =~ s/\r?\n/\r\n/g;
$hdrs->{'Content-Type'} = qq(text/plain; charset="iso-2022-jp");
$hdrs->{'Content-Transfer-Encoding'} = "7bit";
}
僕の環境ではこれだけでメールの送信が正しく行われるようになったので、似たような現象で悩んでいる人は試してみては?
それにしても「デフォルト言語が日本語なら」という分岐部分なので、確かにこれなら日本人にしか起きない問題なわけだ。
ということで無事 Movable Type 3.15 にアップグレード完了。これからもご声援お願いします。
コメント