Re: добавим офтопега
> я смотрю народ вовсю с MIME::Tools работать умеет
> может кто подскажет как решить изящно задачку
> есть письмо в stdin
> кормлю его MIME::Parser'у
> далее хочу получить раскодированные заголовки (например From и To)
> $parser->decode_headers(1);
$parser оставь как есть.
my $entity = $parser->read(\*STDIN);
my $head = $entity->head();
$head->decode();
$head->unfold();
my $charset = $head->mime_attr('content-type.charset') || ...;
my ($subject, $date, $from, $references, $in_reply_to, $xsender) =
map {xcode($charset, substr($head->get($_), 0, -1))}
qw(Subject Date From References In-Reply-To X-Sender);
sub xcode {
my ($charset, $src) = @_;
my %charsets = (
'windows-1251'=>'WIN',
'iso8859-5'=>'ISO',
'koi8-r'=>'KOI8',
'koi8r'=>'KOI8',
'koi8-u'=>'KOI8',
'utf-8'=>'UTF8',
'utf8'=>'UTF8'
);
return $src unless ($charset); # Mail(1)
return Convert::Cyrillic::cstocs($charsets{lc($charset)}, 'KOI8', $src);
}
у меня тут антикварный код, поэтому используется антикварный
Convert::Cyrillic. Сейчас надо юзать Encode (3perl). В том числе и вместо Text::Iconv;
Если хочется иметь возможность работы когда кодировки заголовков отличны
от кодировки тела, то есть такой код:
http://pavel.ammosov.ru/ruperl/ru-perl-faq-4.html#ss4.6
Reply to: