Forum Webscript.Ru
Программирование => Perl => Тема начата: AZtpa от 14 Января 2005, 16:53:04
-
Добрый день.
Имеем код для пересылки сообщения:
use Mail::Mailer;
my $subject = "От меня";
my $body = "Тело сообщения";
$mailer->open
({
From => $from_address,
To => $to_address,
Reply-to => $reply_to_address,
Subject => $subject
}) or die "Can\'t open: $!\\n";
print $mailer $body;
Подскажите пожалуйста каким образом переслать сообщение, используя кодировку отличную от принятой по умолчанию, например Windows-1251 вместо koi8-r.
Проблема в том, что по умолчанию на адрес получателя приходит текст в виде абракадабры:
Тема: яБХПХДНБ бКЮДХЯКЮБ
Cообщение: дНАПШИ ДЕМЭ
Заранее признателен,
AZtpa,
-
Послал бы сам себе письмо нормальным образом (через почтовый клиент или веб-интерфейс почтовой службы) и своим скриптом, а потом поискал бы различия.
Ну да ладно:
1. Для указания кодировки тела письма в заголовок надо внести поле "Content-Type: text/plain; charset=\'windows-1251\'". Как это делать в Mail::Mailer, читай в его описалове.
2. Для использования кириллицы в заголовке письма и передачи её в правильной кодировке я делал так:
use MIME::Base64;
my $subject = "заголовок";
subject = "=?WINDOWS-1251?B?".substr(encode_base64($subject),0,-1)."?=";
Т.е. кодировал заголовок по base64, вырезал последний символ конца строки и добавлял в передаваемый заголовок название кодировки и тип кодирования.
-
Еще раз по поводу отправки сообщения в нужной кодировке:
Все в высшей степени просто.
Смотри код:
my ($to_address, $reply_to_address, $from_address, $subject, $body) = (\'\',\'\',\'\',\'\',\'\');
my $message = qq(To: $to_address
Reply-to: $reply_to_address
From: $from_address
Subject: $subject
Content-Type: text/plain; charset="Windows-1251"
$body);
my $mail_prog = \'path to your send mail\' ;
local *EMAIL;
open (EMAIL, "|$mail_prog -t") or die "Can\'t open senmail: $!";
print EMAIL $message;
close (EMAIL) or die "Can\'t close senmail: $!";
Отрабатывает нормально.
AZtpa,
-
AZtpa:
Отрабатывает нормально
А если в сабжекте попробовать поотсылать кириллицу в различных кодировках?