libemail-mime-perl が動かない
パッケージ libemail-mime-perl をインストールし、
Email::MIME を試していたのだが、マルチパートのメールのヘッダーがとれないので悩んでいた。
同じプログラムが Debian (etch) 上だと動くのだが、Ubuntu 7.10 ではだめ・・・。
libemail-mime-perl のバージョンは同じだが、依存パッケージの libemail-simple-perl のバージョンが若干違う。Debian は、1.996-1。Ubuntu は、1.999-1。
サンプル:test.pl
use strict; use warnings; use Email::MIME; my $message = join '', <>; my $mail = Email::MIME->new($message); foreach my $part ($mail->parts()) { print $part->content_type . "\n" if ($part->content_type); print "--\n"; }
Debian の結果:
$ cat error.txt | perl test.pl text/plain
- -
- -
- -
Ubuntu の結果:
$ cat error.txt | perl test.pl
- -
- -
- -
仕方がないので、MIME::Parser (libmime-perl パッケージ) を使う。
use strict; use warnings; use MIME::Parser; my $parser = MIME::Parser->new; $parser->output_dir('/tmp'); my $entity = $parser->parse(\*STDIN); foreach my $part ($entity->parts) { print $part->head->get('Content-Type'); print "--\n"; }