MIME-toolsのインストール

CentOS 4.4にMIME-toolsをインストールしたときのメモ。MIME-toolsはメール(MIME)解析のためのperlモジュールの集まり。

# wget http://search.cpan.org/CPAN/authors/id/D/DS/DSKOLL/MIME-tools-5.420.tar.gz
# zcat MIME-tools-5.420.tar.gz | tar xvf -
# cd MIME-tools-5.420
# perl Makefile.PL

上記を実行すると、必要なモジュール関連のメッセージが出力される。メッセージによるとこれをインストールするには、以下が必要になる。

  • IO::Stringy: At least version 1.211
  • Mail::Field: At least version 1.05
  • Mail::Header: At least version 1.01
  • Mail::Internet: At least version 1.0203
# cpan
cpan> install IO::Stringy
cpan> install Mail::Field

これにより、上記4つのモジュールがインストールされる。また、MIME::Base64は標準で入っているがバージョンが3.03よりも後がよいというメッセージのためにアップグレードする。

cpan> install MIME::Base64
cpan> quit
# make distclean
# perl Makefile.PL
# make test
# make install

これで以下のようにすると解析可能。以下では解析結果を出力しない(InCore)で画面表示する例。

#!/usr/bin/perl -w

use MIME::Parser;

$parser = new MIME::Parser;
$parser->output_to_core(1); # default is false(0)
$entity = $parser->parse(\*STDIN);
$header = $entity->head;
print "Multipart? = " . ($entity->is_multipart ? "YES" : "NO") . "\n";
print "Number parts: " . $entity->parts . "\n";
print "From: " . $header->get("from");
print "Subject: " . $header->get("subject");
print "----\n";
if ($entity->is_multipart) {
    foreach (0 .. 1) {
        print "Mime-Type: " . $entity->parts($_)->mime_type . "\n";
#        print $entity->parts($_)->stringify_body;
        print $entity->parts($_)->bodyhandle->as_string;
        print "----\n";
    }
} else {
    print $entity->stringify_body;
    print "----\n";
}