[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: