Проблема с кодировкой при отправке письма

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Проблема с кодировкой при отправке письма

Сообщение Septem » 24.07.2012 17:50:56

Всем доброго времени суток.

Возникла такая проблема. Отправляю письмо (по протоколу SMTP, использую библиотеку Synapse) на свой почтовый ящик. Письмо доходит, всё нормально. Было. Пока не попробовал скомпилировать под WinXP и запустить программу оттуда. Письмо, отправленное из под винды, приходит в каком-то совершенно вырвиглазном виде, когда строка

Время начала: 17:23:22

принимает следующий вид:

Р_СЂР_РјСЏ РЅР_С_Р_Р_Р_: 17:23:22

Сразу оговорюсь, дело не в виртуалке — пробовал загружать винду, установленную на другом разеделе диска — то же самое. При этом из-под Линукса отправляется корректно.

Нет ли у кого идей, как лечить это?

Xubuntu 12.04, Lazarus 0.9.31, FPC 2.6.0;
Windows XP, Lazarus 0.9.30.4, FPC 2.6.0.
Septem
незнакомец
 
Сообщения: 5
Зарегистрирован: 08.05.2012 23:00:34

Re: Проблема с кодировкой при отправке письма

Сообщение PapaNT » 15.08.2012 12:23:22

Попробуйте перед текстом ставить теги ?UTF-8?

Добавлено спустя 2 минуты 6 секунд:
и с
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: base64
PapaNT
постоялец
 
Сообщения: 167
Зарегистрирован: 11.09.2009 12:06:46
Откуда: Москва

Re: Проблема с кодировкой при отправке письма

Сообщение amateur » 15.08.2012 13:03:54

Код: Выделить всё
var Mess: TMimeMess;
    from : string;
begin
    POP:=TPOP3Send.Create;
    POP.AuthType:=POP3AuthLogin;
    POP.Password:=PassEdit.Text;
    POP.UserName:=LoginEdit.Text;
    POP.TargetHost:=HostEdit.Text;
    if POP.Login then begin
      Memo2.Lines.Clear;
      POP.Retr(SpinEdit1.Value);//получили самое старое письмо
      Mess:=TMimeMess.Create;//создали объект
      Mess.Lines.Assign(POP.FullResult);//записали всю полученную от сервера информацию
      Mess.DecodeMessage;//декодировали сообщение
//      from:=GuessEncoding(Mess.MessagePart.PartBody.Text);
      Memo2.Lines.Add('*****************************************');
      Memo2.Lines.Add(Mess.Header.CustomHeaders.CommaText);
      Memo2.Lines.Add('*****************************************');
      Memo2.Lines.Add(Mess.Header.XMailer);//вывели информацию из заголовка
      Memo2.Lines.Add('*****************************************');
      Label8.Caption := Mess.MessagePart.Charset;
      Mess.MessagePart.Lines.SaveToFile('serg.txt');
      Memo2.Lines.Add(KOI8ToUTF8(Mess.MessagePart.PartBody.Text));//вывели тело сообщения
{      if Length(ComboBox1.Text) = 0 then begin
        Memo2.Lines.Add(ConvertEncoding(Mess.MessagePart.PartBody.Text, EncodingAnsi{Mess.MessagePart.Charset},EncodingUTF8));//вывели тело сообщения
        end else begin
          Memo2.Lines.Add(ConvertEncoding(Mess.MessagePart.PartBody.Text, ComboBox1.Text,EncodingUTF8));//вывели тело сообщения
      end;}
      Memo2.Lines.Add('*****************************************');
      Mess.Free;

бред но у меня работает. Точнее сказать что синапсе, что инди сами преобразуют письмо в "нужую" кодировку, но вот лазарю нужен токо UTF8. Пример делал для себя (тестил бяку)
Аватара пользователя
amateur
энтузиаст
 
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Re: Проблема с кодировкой при отправке письма

Сообщение Ism » 15.08.2012 22:41:28

Код: Выделить всё
  message_imap.Clear;
  message_imap.Header.CharsetCode:=UTF_8;
  message_imap.Header.ReplyTo:='';
  message_imap.Header.From:='';
  message_imap.Header.Subject:='';
  message_part:=message_imap.AddPartTextEx(Memo1.Lines,nil,UTF_8,true,ME_8BIT);
  message_imap.EncodeMessage;

Внимание , true отключает преобразование кодировок и если текст в utf8 , то все будет работатьReplyTo
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 230

Рейтинг@Mail.ru