Конференция "Сети" » как заставить Indy 10 передавать тело письма по русски ? [D7, WinXP]
 
  • tytus (26.11.07 11:47) [0]
    Доброго дня мастера.
    Перепробовал многое, и всего чего добился - это чтобы тема письма отображалась по русски.
    вот исправления:
    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 - было все по русски?
  • umbra © (26.11.07 12:10) [1]

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

    передайте его с ContentTransferEncoding = Quoted-printable. Для нормальных почтовых клиентов достаточно указания Charset.
  • Anatoly Podgoretsky © (26.11.07 12:16) [2]
    Пошли письмо и посмотри заголовки.
  • tytus (26.11.07 12:28) [3]
    >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 © (26.11.07 12:36) [4]
    > tytus  (26.11.2007 12:28:03)  [3]

    Видишь кодировку для тела?
    Я нет.
  • umbra © (26.11.07 12:36) [5]
    а в тело письма вы точно в windows-1251 пишете? :)
  • tytus (26.11.07 12:40) [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 © (26.11.07 13:25) [7]
    Не понятно зачем тут обработчик события, когда все парметры (а их много больше) можно установить в дизайн тайм?

    Приведен ли весь заголовок?
  • tytus (26.11.07 13:35) [8]
    >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 © (26.11.07 13:56) [9]
    > tytus  (26.11.2007 13:35:08)  [8]

    Вот теперь вижу должный заголовок.
    Теперь второй шаг, убери Content-Transfer-Encoding: quoted-printable и замени его или на Base64 или на None (если допустимо), только не quoted-printable.
    Наиболее оптимальный и по качеству и компромис по размеру это Base64 - с ним меньше всего проблем.
  • tytus (26.11.07 15:18) [10]
    >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 © (26.11.07 16:44) [11]
    > tytus  (26.11.2007 15:18:10)  [10]

    Это неправильно, значит не отработало или не там установил.
 
Конференция "Сети" » как заставить Indy 10 передавать тело письма по русски ? [D7, WinXP]
Есть новые Нет новых   [134431   +10][b:0][p:0]