[perl][mail] Русские буквы в subject-е [fixed]
а чем отправляешь?
Через sendmail
open (M, "|-") || exec ($SENDMAIL,"-f",$from,$to);
print M $body;
close M;
сталкивались с таким багом - это в MIME::что-то_там косяк, кажется.
вроде, если по одному слову кодировать, а потом сцеплять через пробел, то прокатывает.
но я, конечно, могу что-то напутать, а проверять мне сейчас влом.
на CPAN, как я помню, лежал патч к этому самому модулю --- если это целесообразно, то можно пропатчить. короче, проблема эта известная.
вроде, если по одному слову кодировать, а потом сцеплять через пробел, то прокатывает.
но я, конечно, могу что-то напутать, а проверять мне сейчас влом.
на CPAN, как я помню, лежал патч к этому самому модулю --- если это целесообразно, то можно пропатчить. короче, проблема эта известная.
Когда-то разбирался с этим делом, читал 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:
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:
Если кому еще случится заниматься подобными вещами, то мне подсказали решение:
Возьми с цпана модуль MIME::AltWords или MIME::EncWords. Там есть функция encode_mimewords.
Оставить комментарий
Sharp
Пытаюсь отправить письмо из perl-ового скрипта.С русскими буквами в теле все прошло на ура, но в поле Subject упорно не получаются.
пробовал написать
и
Все какая-то фигня получается.
Может кто подсказать, как добиться правильного поведения?