URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 7256
[ Назад ]

Исходное сообщение
"Net::SMTP кодировка"

Отправлено anonim , 02-Июн-11 12:10 
Здравствуйте, господа !

#!/usr/local/bin/perl -w
use Net::SMTP;    
$smtp = Net::SMTP->new('XXXX:25');
$smtp->mail('XXXX@XXXX');
$smtp->to('XXXX@XXXX');
$smtp->data();
$smtp->datasend('To:XXXX@XXXX');
$smtp->datasend("\n");
$smtp->datasend("Content-Type: text/plain; charset=\"windows-1251\"\n\n");
$smtp->datasend("ПРИВЕТ");
$smtp->dataend();
$smtp->quit;


Microsoft ESMTP MAIL Service, Version: 6.0.3790.4675
Используется Exchange2003, Письмо приходит, но с Русскими буквами проблема?

Заранее благодарен.


Содержание

Сообщения в этом обсуждении
"Net::SMTP кодировка"
Отправлено Сергей , 02-Июн-11 12:39 
> Здравствуйте, господа !
>  $smtp->datasend("Content-Type: text/plain; charset=\"windows-1251\"\n\n");

  Попробуйте Content-Type=text/html либо Content-Type=text/plain и вообще посмотрите исходный текст полученного письма и все там увидите...


"Net::SMTP кодировка"
Отправлено anonim , 02-Июн-11 13:03 
>   Попробуйте Content-Type=text/html либо Content-Type=text/plain и вообще посмотрите
> исходный текст полученного письма и все там увидите...

В параметрах сообщения пишется

Microsoft Mail Internet Headers Version 2.0
Received: from localhost.localdomain ([XX.XX.XX.XX]) by XXXX with Microsoft SMTPSVC(6.0.3790.4675);
     Wed, 1 Jun 2011 16:38:26 +0400
To: XXXX
Content-Type: text/plain; charset="windows-1251"
From: XXXX
Return-Path: XXXX
Message-ID: <XXXN01zmRf6Ci6n00000168@XXXX>
X-OriginalArrivalTime: 01 Jun 2011 12:38:26.0611 (UTC) FILETIME=[CDA2C830:01CC2058]
Date: 1 Jun 2011 16:38:26 +0400


на экране выглядит (слово ПРИВЕТ)

ÏÐÈÂÅÒ

c text/html то же самое.
Какие-то особенности Exchange ?


"Net::SMTP кодировка"
Отправлено Andrey Mitrofanov , 02-Июн-11 13:12 
> на экране выглядит (слово ПРИВЕТ)
> ÏÐÈÂÅÒ

$ echo 'ÏÐÈÂÅÒ'|recode -f u8..1251,u8..l1,1251..
ПРИВЕТ
$ _

> c text/html то же самое.
> Какие-то особенности Exchange ?

Конечно! Кривой он.

Взял входящий 1251 текст перекодировал его из latin-1 в UTF-8, потом результат _ещё_ раз перекодировал из 1251 в UTF-8.

Нормальная работа нормального почтового сервера, да.


"Net::SMTP кодировка"
Отправлено Andrey Mitrofanov , 02-Июн-11 13:15 
> Взял входящий 1251 текст перекодировал его из latin-1 в UTF-8, потом результат
> _ещё_ раз перекодировал из 1251 в UTF-8.
> Нормальная работа нормального почтового сервера, да.

Но, конечно и ---

>>>#!/usr/local/bin/perl -w
>>>use Net::SMTP;    

-- может участвовать в бардаке.


"Net::SMTP кодировка"
Отправлено Сергей , 02-Июн-11 13:32 
>>   Попробуйте Content-Type=text/html либо Content-Type=text/plain и вообще посмотрите
>> исходный текст полученного письма и все там увидите...

Письма то у вас наверное приходят в нормальном виде, поэтому посмотрите исходный текст письма, который вы нормально видите, наверное не хватает какого-то заголовка для работы вашего почтовика или клиента, вот возьмите его и добавьте, ведь по datasend просто посылается строка...



"Net::SMTP кодировка"
Отправлено Сергей , 02-Июн-11 13:36 
>>   Попробуйте Content-Type=text/html либо Content-Type=text/plain и вообще посмотрите
>> исходный текст полученного письма и все там увидите...
> В параметрах сообщения пишется
> Microsoft Mail Internet Headers Version 2.0
> Received: from localhost.localdomain ([XX.XX.XX.XX]) by XXXX with Microsoft SMTPSVC(6.0.3790.4675);
> c text/html то же самое.
> Какие-то особенности Exchange ?

Да и вот еще я вообще то формирую письмо через модуль MIME:Parser, там можно указать и кодировку и кому и вложить файл и т.д.


"Net::SMTP кодировка"
Отправлено anonim , 02-Июн-11 14:04 
>  Да и вот еще я вообще то формирую письмо через модуль
> MIME:Parser, там можно указать и кодировку и кому и вложить файл
> и т.д.

Хм, посмотр. MIME, а у Вас есть положительный опыт работы с Exchange?


"Net::SMTP кодировка"
Отправлено cryo , 02-Июн-11 14:28 
покажите вывод

set | grep LANG

в той коносоли, где копировали кусок программы.