Использую indy10
Не могу разобраться как отсылать почту в кодировке UTF-8
Сделал процедуру. Работает.
Когда указана кодировка windows-1251 то тело письма отображается нормально.
Но если указать utf-8 то приходят кракозябры.
при этом "тема" письма, всегда отображается нормально.
Подскажите пожалуйста, что не так.
- Код: Выделить всё
- procedure Send_mail_SMTP();
 var clSMTP : TIdSMTP;
 sTXT : string;
 begin
 clSMTP := TIdSMTP.Create(nil);
 clSMTP.Host := MsgOper.smtp;
 clSMTP.Port := MsgOper.smtp_port;
 clSMTP.Username := MsgOper.login;
 clSMTP.Password := MsgOper.Password;
 clSMTP.AuthType := satDefault;
 if MsgOper.smtp_encryption='SSL/TLS' then
 begin
 clSMTP.IOHandler := sOpenSSL;
 clSMTP.UseTLS := utUseExplicitTLS;
 end;
 sMessage.From.Address := FromAddress;
 sMessage.Recipients.EMailAddresses := Msg.dest_email;
 sMessage.Subject := UTF8Encode(Msg.msg_subject);
 sMessage.ContentType := 'text/plain';
 sMessage.CharSet := MsgOper.charset;
 if MsgOper.charset='windows-1251'
 then sTXT := UTF8ToWinCP(Msg.msg_text)
 else if MsgOper.charset='utf-8'
 then sTXT := UTF8Encode(Msg.msg_text)
 else sTXT := Msg.msg_text;
 sMessage.Body.Text := sTXT;
 sMessage.Date:= now;
 sMessage.IsEncoded:=true;
 try
 clSMTP.Connect();
 clSMTP.Send(sMessage);
 Msg.msg_id:=0;
 Msg.msg_cnt_part:=1;
 Msg.msg_cost:=0;
 Msg.msg_status:='отправлено';
 Msg.msg_done:=1;
 except
 writelog.WrLog( 'ОШИБКА!!! Подключение к SMTP серверу не удалось. ');
 Msg.msg_id:=0;
 Msg.msg_cnt_part:=0;
 Msg.msg_cost:=0;
 Msg.msg_status:='Нет подключения';
 Msg.msg_done:=0;
 exit;
 end;
 sleep(10);
 clSMTP.Disconnect;
 clSMTP.Destroy;
 end;





