[perl][mail] Русские буквы в subject-е [fixed]

Sharp

Пытаюсь отправить письмо из perl-ового скрипта.
С русскими буквами в теле все прошло на ура, но в поле Subject упорно не получаются.
пробовал написать

$subject = encode_base64($subject)
Subject: =?koi8-r?B?$subject?=

и

$subject = encode_qp($subject);
Subject: =?koi8-r?Q?$subject?=

Все какая-то фигня получается.
Может кто подсказать, как добиться правильного поведения?

pitrik2

а чем отправляешь?

Sharp

Через sendmail

open (M, "|-") || exec ($SENDMAIL,"-f",$from,$to);
print M $body;
close M;

Bibi

сталкивались с таким багом - это в MIME::что-то_там косяк, кажется.
вроде, если по одному слову кодировать, а потом сцеплять через пробел, то прокатывает.
но я, конечно, могу что-то напутать, а проверять мне сейчас влом.
на CPAN, как я помню, лежал патч к этому самому модулю --- если это целесообразно, то можно пропатчить. короче, проблема эта известная.

VitMix

Когда-то разбирался с этим делом, читал RFC, много думал. Сейчас уже всего не вспомню, но вот кусок кода на PHP, который тогда написал и который вроде бы работает без проблем:
function encode_header_value ($value)
{
$ascii = @iconv ("UTF-8", "ASCII", $value);
if ($ascii != $value || ereg ("[\n\r]", $value
{
$e_value = base64_encode ($value);
$value = '=?UTF-8?B?'.$e_value.'?=';
}

return $value;
}
Функция берёт строку в UTF-8 и выдаёт её в таком виде, в котором её можно подставлять в Subject:

Sharp

Если кому еще случится заниматься подобными вещами, то мне подсказали решение:
Возьми с цпана модуль MIME::AltWords или MIME::EncWords. Там есть функция encode_mimewords.
Оставить комментарий
Имя или ник:
Комментарий: