ウェブメーラー改修

一部のSubjectがデコードされない問題発覚。またしてもUTF-8だ。**「メールヘッダーはISO-2022-JPがセオリーだろ~?」**と愚痴ったところで何の解決にもならない。

つか、これも時代の流れってヤツなのかしら?

でもね、mimedecodeがEUCとシフトJISにしか対応してないという問題は昨年解決したはずなのに…と思って見直すと、昨年改修したのは表示のUTF-8対応だった….しょぼん。

というわけで、今回は mimir.pl の mimedecode を改修。ISO-2022-JPをbase64decodeしてるとこをパクって、**"=?utf-8?Q?"**をキャッチしてqpdecodeに喰わせるよう追加すれば良い。

## charset=`utf-8',encoding=`Q' の encoded-word にマッチするパターン
$match_mime_utf_qp = '=\?[Uu][Tt][Ff]-[78]\?[Qq]\?(.+)=*\?=';
## &bodydecode が使う処理残しデータ用バッファ
$bdebuf = "";
## mimedecode interface ##
sub main'mimedecode {
    local($_, $kout) = @_;
    1 while s/($match_mime)[ \t]*\n?[ \t]+($match_mime)/$1$3/o;
    s/$match_mime/&kconv(&base64decode($1))/geo;
    s/$match_mime_utf_qp/&kconv(&qpdecode($1))/geo;
    s/(\x1b[\$\(][BHJ@])+/$1/g;
    1 while s/(\x1b\$[B@][\x21-\x7e]+)\x1b\$[B@]/$1/;
    1 while s/(\x1b\([BHJ][\t\x20-\x7e]+)\x1b\([BHJ]/$1/;
    s/^([\t\x20-\x7e]*)\x1b\([BHJ]/$1/;
    $_;
}

と、こんな感じかな。

しかし、「Yodobashi.com NEWS」ってば、いつからUTF-8でエンコードするようになったんだ?

参照

竹田暁彦のホームページ http://www.ai.is.saga-u.ac.jp/~takeda/

@IT http://www.atmarkit.co.jp/