マルチパートメールの添付ファイルを取り出す (module)MIME-Parser
back
MIME::Parser にて
----
use MIME::Parser;
my $parse = new MIME::Parser;
$parse->output_to_core(1);
my $buf = (メールデータの取得)
my $entity = $parse->parse_data($buf);
&body_parse($entity);
sub body_parse {
my $entity = shift;
my @parts = $entity->parts;
if (@parts) {
foreach (@parts) {
&body_parse($_);
}
}
else {
$mime_type = $entity->head->mime_type;
$encoding = $entity->head->mime_encoding;
$filename = $entity->head->recommended_filename;
$entity->print_body(\*STDOUT);
$bh = $entity->bodyhandle->open("r");
while (<$bh>) {
print;
}
}
}
----
いわゆる「添付ファイルを削除したい」であれば、第1パートのみ使って、
第2パート以降を切り捨てれば、よほど変なメールでない限りOK
あとはメールのマルチパートボディのボディ(変な表現…)をファイルに書き出すなり
なんなりすればよい。
実は、メールのファイルから、添付ファイルをファイルに書き出すだけなら、
----
use MIME::Parser;
new MIME::Parser->parse(\*STDIN);
----
だけでもよかったりして :D
back