Email::MIME モジュール

先のエントリに書いた通り bogofilter を使う前処理のために Email::MIME を使いましたが、このモジュールのインストールについて説明しておきます。perl は cygwin の 5.8.7 を使用しているのですが、Email::MIME モジュールを動かすために以下のモジュールを追加インストールしました。


・MIME-Types-1.17
・MIME-Base64-3.07
・Email-MIME-ContentType-1.01
・Email-MIME-Encodings-1.3
・Email-Simple-1.980
・Email-MIME-1.851


依存関係があるのでこの順でインストールします。それぞれ CPAN から探して取得し、ソースを展開後 “perl Makefile.PL; make; make install” を実行します。


それとインストールが終わってこのモジュールを使ったプログラムを実行する時の話なのですが、次のような Content-Type フィールドを含むメールの処理中に “Illegal Content-Type parameter at /usr/lib/perl5/site_perl/5.8/Email/MIME.pm line 13” というエラーメッセージが出ます。


Content-Type: text/plain;
Content-Transfer-Encoding: base64


どうやら “text/plain” の後に “;” が入っているのがまずいようです。”;” がないメールや “;” の後に属性の指定があるメールについてはエラーメッセージが出ません。ただ、エラーメッセージが表示されてもきちんとデコード処理等は行われているので気にしないことにしました。


そうそう、細かい話ですがドキュメントに、


my Email::MIME @parts = $parsed->parts;


とあるのは、


my @parts = $parsed->parts;


としなければ動きませんでした。