Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Проблема с кодировкой тела письма  [new]
Gallemar
Member

Откуда: г.Иркутск
Сообщений: 4872
Переписываю старые проекты с Delphi 7 на Delphi 10.2 Indy 10.6, не могу победить кодировку:
  IdMessage1.CharSet:='UTF-8';
  IdMessage1.ContentType:='text/plain; UTF-8';
  IdMessage1.Body.Text:='йцукен';
  IdMessage1.Subject:='проблема с подключением';

Заголовок отображается нормально, а тело письма как ???.
11 сен 18, 11:50    [21670733]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой тела письма  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12247
Так нужно самому кодировать. В Delphi ведь string не UTF8.
11 сен 18, 12:29    [21670797]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой тела письма  [new]
Gallemar
Member

Откуда: г.Иркутск
Сообщений: 4872
X11
Так нужно самому кодировать. В Delphi ведь string не UTF8.

пробовал Windows-1251, такая же фигня
11 сен 18, 12:42    [21670812]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой тела письма  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12247
Я не вижу здесь процедур кодирования.
11 сен 18, 12:48    [21670820]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой тела письма  [new]
Gallemar
Member

Откуда: г.Иркутск
Сообщений: 4872
  IdMessage1.CharSet:='Windows-1251';
  IdMessage1.ContentType:='text/plain';
  IdMessage1.Body.Text:='йцукен';
11 сен 18, 12:52    [21670830]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой тела письма  [new]
чччД__
Guest
Gallemar
  IdMessage1.CharSet:='Windows-1251';
  IdMessage1.ContentType:='text/plain';
  IdMessage1.Body.Text:='йцукен';


X11
Так нужно самому кодировать. В Delphi ведь string не UTF8.


PS: я в инди не разбираюсь, если что...
11 сен 18, 13:01    [21670844]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой тела письма  [new]
Gallemar
Member

Откуда: г.Иркутск
Сообщений: 4872
function ConvertToWIN1251(instr:string):string;
begin
result:='=?'+'Windows-1251'+'?B?'+form1.IdEncoderMIME1.Encode(instr)+'?=';
end;

  IdMessage1.CharSet:='Windows-1251';
  IdMessage1.ContentType:='text/plain';
  IdMessage1.Body.Text:=ConvertToWIN1251('йцукен');


Вместо '???' получаю =?Windows-1251?B?Pz8/Pz8/?=
11 сен 18, 13:02    [21670846]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой тела письма  [new]
знаком с DELPHI
Guest
Gallemar,

Копай IdMessage1.OnInitializeISO
11 сен 18, 13:36    [21670896]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой тела письма  [new]
alekcvp
Member

Откуда:
Сообщений: 1091
Gallemar,

IdMessage1.CharSet := 'UTF-8';
  IdMessage1.ContentType := 'text/plain; UTF-8';
  IdMessage1.Body.Text := UTF8String('йцукен');
  IdMessage1.Subject := 'проблема с подключением';

И, кстати, IdMessage1.Body.Text - какой тип имеет?
11 сен 18, 13:39    [21670902]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой тела письма  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12247
X11
Так нужно самому кодировать. В Delphi ведь string не UTF8.


Но это не точно.


Gallemar
не могу победить кодировку:


а что именно не так?
в какой программе или сервисе проблема?

я посмотрел у себя, попробуй и ты поработать с TIdText

procedure SendMail;
begin
  IdMessage1.ClearBody;
  IdMessage1.Subject :=  _name + ' ' + _PRICE + 'руб, ' + _YEAR + 'г. ';

  with TIdText.Create(IdMessage1.MessageParts) do
  begin
    CharSet := 'UTF-8';
    Body.Clear;
    Body.Add('Архив: ' +  IfThen(fIS_ARC, 'ДА', 'нет'));
    Body.Add('Цена: ' +   fPRICE);
    Body.Add('Ср.цена: '+ fprice_avg);
    Body.Add('Объем: ' +  fcapacity);
    Body.Add('Год выпуска: ' + _YEAR);
    Body.Add('Ссылка: ' + fURL);

    ContentType := 'text/plain';
  end;// with

    try
      if not fSMTP.Connected then
        fSMTP.Connect;
    except
      on e: exception do
        ///
    end;//try

    if fSMTP.Connected then
    try
      Sleep(StrToIntDef(fSendInterval, 15) * 1000);

      fSMTP.Send(IdMessage1);

      fSMTP.Disconnect(true);
    except
      on e: exception do
        ///
    end;//try

end;
11 сен 18, 16:51    [21671221]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодировкой тела письма  [new]
AJi
Member

Откуда: Москва
Сообщений: 66
Gallemar,

У меня вот так работает:
AMsg.ContentType := 'multipart/mixed; charset=UTF-8;';
11 сен 18, 20:26    [21671452]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить