Monday 29 November 2010

MIME -- メールにWordやPDFを貼るな

いや、どうせ、大したものじゃないので、貼られていても読みません。

なんだが、Mac OS X が、

 変な文字コードがあると、Unicode + Base64
 HTMLでは、iso-2022-jp + Q encode

って技を出すので、最近、mh では、まったくメールが読めません。

Unicode 対応はしたのに、multi part な base64 にすると、mhn じゃないと読めなくて、mhn の馬鹿さ加減は限界ないので、不可。

mh やめろって言う説はあるし、Gmail に転送して iPhone で読むって言うのはやってはいるんですけどね。

山田さんのメールが、iso-2022-jp + Q encode なので、さっぱり読めない。で、mhl を Perl で書けば良いんだよなと思って、Java Kuche の勉強会の間に書き始めたんだけど、これが、

 楽勝

MIME::Base64, MIME::QuotedPrint とかあるし、NKF module があるので、さくさくだ。なので、日曜日に、pdf/word にも対応しました。

pdf は、xpdf に pdf2text があるのね。docx は、zip な xml なので、unzipでtagを除けば良い。doc は、antiword って言うのがある。ついでに、全角数字やアルファベットも半角に統一。

これで、数行の平文な PDF とか Word が来ても、全然平気で読めます。

意外に面倒なのが、HTML。

 Q encode で tag の中で改行されている
 Q encode では改行を削るのは許されない
 HTML中の改行は削る
 <br>は改行にする
 <pre> の中だけは改行を保存する

いや、まぁ、良いんだけど。
  1 while (s/(<[^>]*)[\r\n]+([^>]*>)//ig );
とかは考え付いたんだが、最後の <pre> の実装がわからん。

と言うわけなので、まだ、しばらく MH 使うらしい。

No comments: