(PERL) Mime::Parser и русские аттачи

Sergey K.
Дата: 25.10.2006 16:49:31
Задача. на FreeBSD 5.4, Скрипт по POP3 смотрит письмо и складывает вложения на виндовую шару, которая подключается так
mount_smbfs -I 192.168.2.1 -E koi8-r:cp866 //Sergey@abbat/d /mnt
или так
mount_smbfs -I 192.168.2.1 //Sergey@abbat/d /mnt

всё бы ничего но если аттачи в писме названы по русски то в итоге получаем кракозяблы в место имени. Сам скрипт: взят тут
http://www.sergeyka.h10.ru/attache_mail.html

my $pars = new MIME::Parser;
$pars->output_dir("/mnt/1");

my $msgs = $pop3->list;
foreach (keys %$msgs){
# Получаем в массив @mail очередное письмо
my @mail=$pop3->get($_);
for my $lin (0..$#mail) {
for my $col (0..$#{$mail[$lin]}) {
if ($mail[$lin][$col]=~ m/=\?koi8-r\?/i) {
$mail[$lin][$col]=decode_mimewords($mail[$lin][$col]);
$mail[$lin][$col] = Convert::Cyrillic::cstocs('koi8','dos',$mail[$lin][$col]);
}
if ($mail[$lin][$col]=~ m/=\?windows-1251\?/i) {
print "STR: " . $mail[$lin][$col] . " Decode: " . detect($mail[$lin][$col]) . "\n";
$mail[$lin][$col]=decode_mimewords($mail[$lin][$col]);
print "DEC: " . $mail[$lin][$col] . " Decode: " . detect($mail[$lin][$col]) . "\n";
$mail[$lin][$col] = Convert::Cyrillic::cstocs('win','dos',$mail[$lin][$col]);
print "CON: " . $mail[$lin][$col] . " Decode: " . detect($mail[$lin][$col]) . "\n\n";
}

}
}
# Натравливаем парсинг на очередное письмо
my $entity=$pars->parse_data(@mail);
}

-----------------------
на выходе получаем
perl ./test.pl

STR: Subject: =?windows-1251?B?8OXl8fLwINDl5fHy8DI=?=
Decode:
DEC: Subject: ПЕЕЯРП пЕЕЯРП2
Decode: 1251
CON: Subject: ЮггАБЮ -ггАБЮ2
Decode: 866

STR: Content-Type: TEXT/PLAIN; name="=?windows-1251?Q?=F0=F3=F1=F1=EA=E8=E9=2Etxt?="
Decode:
DEC: Content-Type: TEXT/PLAIN; name="ПСЯЯЙХИ.txt"
Decode: 1251
CON: Content-Type: TEXT/PLAIN; name="ЮЦААL¬L.txt"
Decode: 866

STR: Content-Disposition: attachment; filename="=?windows-1251?Q?=F0=F3=F1=F1=EA=E8=E9=2Etxt?="
Decode:
DEC: Content-Disposition: attachment; filename="ПСЯЯЙХИ.txt"
Decode: 1251
CON: Content-Disposition: attachment; filename="ЮЦААL¬L.txt"
Decode: 866

-----------------------
а в каталоге
msg-3963-1.txt - содержит текст писма
%E0%E3%E1%E1%AA%A8%A9.txt - аттач который назывался "русский.txt"

Не могу поборот, вот уже который день