![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как заставить 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.