« ソフトバンク携帯が、BBフォンと通話無制限のプラン「ホワイトコール24」を発表 | メイン | fml で quoted-printable なメールを扱うには?その2 »
fml で quoted-printable なメールを扱うには?
2008年06月03日〜fml〜
私が使っているメーリングリスト運営用のプログラムに、fml というものがあります。このfml、多機能で非常に良いのですが、使い込むと色々悩ましい部分も出てきます。
今後は、備忘録を兼ねて(そもそもブロードバンド備忘録だし)ここに、その設定についての考察を述べていきたいとおもいます。
さて、前置きはこれくらいにして、今回は、Content-Transfer-Encoding: quoted-printable の話。
事の発端は、HTML メールを禁止(HTML 部分を削除してしまって配信する)したMLの運用中に、文字化けメールが発生したことです。送信者のメーラーは、Windows Vista に付属の windows mail。最初は何故化けたのか、さっぱり分かりませんでした。同じメーラーを使っても、文字化けしない人もいましたから。
その後の調べで、どうやら文字化けしたメールはHTMLを含んだ multipart なメールだと言うことが分かりました。multipart メールの各パートのうち、text/plain なパートだけを抽出して配信する際、どうもMIMEのエンコード情報が欠落しているようです。
本来は、fml を改修してもらって不具合を解消するのがスジなのでしょうけれども、作者の深町さんはご病気の様子。ならば、と当面なんとかするために作ったのが次の HOOK です。
$START_HOOK =q#
if($Envelope{'Body'}=~/^\s*Content-Transfer-Encoding:\s*quoted-printable/im){
require ("mimer.pl");
$Envelope{'Body'} = &bodydecode($Envelope{'Body'},"qp");
&DEFINE_FIELD_FORCED("x-strip-mime","quoted-printable");
}else{
&DEFINE_FIELD_FORCED("x-strip-mime","pass");
}
#;
とりあえず、Body の中に、Content-Transfer-Encoding: quoted-printable と書かれた部分を見つけたら、mimer.pl を呼び出して、強制的にデコードしてしまっています。
で、一応、HOOK が判定したよ、という証拠を、x-strip-mime というヘッダに書き込んでいます。
うちの環境ではとりあえず、この表記で動きました。
たぶん、エラー処理とか、もっと考えなければならないとは思うのですが、取り急ぎの対策ならこれでもなんとかなるかなぁ、と思います。
もっと良い方法があれば、コメント欄ででも教えてください。
トラックバック
このエントリーのトラックバックURL:
http://www.elgrand.org/mt-ctl/mt-tb.cgi/765