Но вот ещё вопрос:
Вобщем пробую я сделать что-то вроде...
$parser = new MIME::Parser;
$parser->output_under("d:/1/test");
$parser->output_prefix("killpref");
$mail = "d:/1/incl.eml";
open $io, '<', $mail or die "open fault: $!";
$entity = $parser->parse($io);
$parser->tmp_recycling(0);
$results = $parser->results;
@msg = $results->msgs;
@flist='';
foreach $m (@msg) {
if ($m=~/.*?outputting body to disk file.*?/){
$swap=$m;
if($swap=~/.*?killpref.*?/) { }
else {
$swap=~s/debug: outputting body to disk file: //g;
print $swap;
push @flist,$swap;
}
}
}
for (@entity_queue = ($entity); scalar @entity_queue;)
{
$entity = shift @entity_queue;
if ($bh = $entity->bodyhandle) {
$io = $bh->open("r") or die "open fault: $!";
while (defined($_ = $io->getline)) {
}
$io->close();
} else {
push @entity_queue, $entity->parts();
next;
}
}
$entity->purge();
После таких махинаций, в принципе, в директории
d:/1/test должна появится папка в которой есть аттачи... Но...
Если в письме больше одного аттачмента, там всегда сохраняется на аттачмент меньше...
При том в массиве @flist существуют пути до всех файлов
а в массиве @msg отражается запись о сохранении тела этого файла на диск. Что делать? Как бороться? Не приделывать же в конец письма поддельный аттач! :)