Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как заставить Indy 10 передавать тело письма по русски ? [D7, WinXP]


tytus ©   (2007-11-26 11:47:00) 

Доброго дня мастера.
Перепробовал многое, и всего чего добился - это чтобы тема письма отображалась по русски.
вот исправления:
procedure TSendMailFm.IdMessage1InitializeISO(
 var VTransferHeader: TTransfer; var VHeaderEncoding: Char;
 var VCharSet: String);
begin
VCharSet:='windows-1251';
VTransferHeader := bit8;
VHeaderEncoding := 'B';
end;
подправил файл idMessageClient -
   if ATextPart.CharSet = '' then begin
     ATextPart.CharSet := ISOCharSet; {do not localize}
   end;
//сцылок на данное исправление - палным полно -)
with idMessage1 do
begin
   CharSet:='windows-1251';
   ContentType:='text/plain';
end;
вот и все.
Одни говорят что так работает, а у меня нет.
Как мне передать тело письма, чтобы открыв его в MS Outlook - было все по русски?


Anatoly Podgoretsky   (2007-11-26 16:44:00) [1]

> tytus  (26.11.2007 15:18:10)  [10]

Это неправильно, значит не отработало или не там установил.


tytus   (2007-11-26 15:18:00) [2]

>Anatoly Podgoretsky ©   (26.11.07 13:56) [9]
Спасибо, учтем на дальнейшее.
Заменил  на Base64, и вот что в заголовке:
MIME-Version: 1.0
Date: Mon, 26 Nov 2007 14:14:51 +0000
Content-Type: text/plain ; charset="windows-1251"
Content-Transfer-Encoding: quoted-printable
... тоже самое.


Anatoly Podgoretsky   (2007-11-26 13:56:00) [3]

> tytus  (26.11.2007 13:35:08)  [8]

Вот теперь вижу должный заголовок.
Теперь второй шаг, убери Content-Transfer-Encoding: quoted-printable и замени его или на Base64 или на None (если допустимо), только не quoted-printable.
Наиболее оптимальный и по качеству и компромис по размеру это Base64 - с ним меньше всего проблем.


tytus   (2007-11-26 13:35:00) [4]

>Anatoly Podgoretsky ©   (26.11.07 13:25) [7]
палучилась!!!
var
 iText:TidText;
begin
....
iText:=TidText.Create(idMessage1.MessageParts,nil);
iText.ContentType:='text/plain';
iText.CharSet:='windows-1251';
for i:=0 to RE2.Lines.Count-1 do
 iText.Body.Add(RE2.Lines[i]);  
...
end;
а вот и загаловки:
MIME-Version: 1.0
Date: Mon, 26 Nov 2007 12:23:02 +0000
Content-Type: text/plain ; charset="windows-1251"
Content-Transfer-Encoding: quoted-printable

всем спасибо!


Anatoly Podgoretsky   (2007-11-26 13:25:00) [5]

Не понятно зачем тут обработчик события, когда все парметры (а их много больше) можно установить в дизайн тайм?

Приведен ли весь заголовок?


tytus   (2007-11-26 12:40:00) [6]

>Anatoly Podgoretsky ©   (26.11.07 12:36) [4]
и я не вижу. Так что делать...?

>umbra ©   (26.11.07 12:36) [5]
строки беру из RichEdit  cо свойством PlainText=true;
with idMessage1 do
   for i:=0 to RE2.Lines.Count-1 do
   begin
     Body.Add(RE2.Lines[i]);
   end;


Anatoly Podgoretsky   (2007-11-26 12:36:00) [7]

> tytus  (26.11.2007 12:28:03)  [3]

Видишь кодировку для тела?
Я нет.


umbra   (2007-11-26 12:36:00) [8]

а в тело письма вы точно в windows-1251 пишете? :)


tytus   (2007-11-26 12:28:00) [9]

>Anatoly Podgoretsky ©   (26.11.07 12:16) [2]
Subject: =?windows-1251?B?8uXs4A==?=
To: ikuliba@it.od.ua
Content-Type: text/plain
Date: Mon, 26 Nov 2007 11:25:19 +0000
Message-Id: <20071126092550.9E6C1B8C8@gw.it.od.ua>
если чесно - пока незнаю как сие мне может помочь....

>umbra ©   (26.11.07 12:10) [1]
не помогло.... может все беда в том что через прокси?


Anatoly Podgoretsky   (2007-11-26 12:16:00) [10]

Пошли письмо и посмотри заголовки.


umbra   (2007-11-26 12:10:00) [11]


> Как мне передать тело письма, чтобы открыв его в MS Outlook
> - было все по русски?
>

передайте его с ContentTransferEncoding = Quoted-printable. Для нормальных почтовых клиентов достаточно указания Charset.


Наверх

Титульная страница Поиск, карта сайта Написать письмо