Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проблема с кодировкой тела письма / 11 сообщений из 11, страница 1 из 1
11.09.2018, 11:50
    #39700832
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой тела письма
Переписываю старые проекты с Delphi 7 на Delphi 10.2 Indy 10.6, не могу победить кодировку:
Код: pascal
1.
2.
3.
4.
  IdMessage1.CharSet:='UTF-8';
  IdMessage1.ContentType:='text/plain; UTF-8';
  IdMessage1.Body.Text:='йцукен';
  IdMessage1.Subject:='проблема с подключением';


Заголовок отображается нормально, а тело письма как ???.
...
Рейтинг: 0 / 0
11.09.2018, 12:29
    #39700863
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой тела письма
Так нужно самому кодировать. В Delphi ведь string не UTF8.
...
Рейтинг: 0 / 0
11.09.2018, 12:42
    #39700873
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой тела письма
X11Так нужно самому кодировать. В Delphi ведь string не UTF8.
пробовал Windows-1251, такая же фигня
...
Рейтинг: 0 / 0
11.09.2018, 12:48
    #39700875
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой тела письма
Я не вижу здесь процедур кодирования.
...
Рейтинг: 0 / 0
11.09.2018, 12:52
    #39700877
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой тела письма
Код: pascal
1.
2.
3.
  IdMessage1.CharSet:='Windows-1251';
  IdMessage1.ContentType:='text/plain';
  IdMessage1.Body.Text:='йцукен';
...
Рейтинг: 0 / 0
11.09.2018, 13:01
    #39700884
чччД__
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой тела письма
Gallemar
Код: pascal
1.
2.
3.
  IdMessage1.CharSet:='Windows-1251';
  IdMessage1.ContentType:='text/plain';
  IdMessage1.Body.Text:='йцукен';



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

PS: я в инди не разбираюсь, если что...
...
Рейтинг: 0 / 0
11.09.2018, 13:02
    #39700885
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой тела письма
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
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/?=
...
Рейтинг: 0 / 0
11.09.2018, 13:36
    #39700909
Проблема с кодировкой тела письма
Gallemar,

Копай IdMessage1.OnInitializeISO
...
Рейтинг: 0 / 0
11.09.2018, 13:39
    #39700910
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой тела письма
Gallemar,

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


И, кстати, IdMessage1.Body.Text - какой тип имеет?
...
Рейтинг: 0 / 0
11.09.2018, 16:51
    #39701000
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой тела письма
X11Так нужно самому кодировать. В Delphi ведь string не UTF8.

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


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

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

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

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
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;
...
Рейтинг: 0 / 0
11.09.2018, 20:26
    #39701098
AJi
AJi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с кодировкой тела письма
Gallemar,

У меня вот так работает:
Код: pascal
1.
AMsg.ContentType := 'multipart/mixed; charset=UTF-8;';
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Проблема с кодировкой тела письма / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]