Конференция "Сети" » indy 10(pop smpt) и кодировка [WinXP]
 
  • ther (29.01.09 13:06) [0]
    драсте...
    сидел сутки но не продвинулся ни на шаг...вопрос по indy 10(pop smpt) и delphi 2009...читал кучу советов но не один не помог..проблема с кодировкой(знаю обсасывался этот вопрос со всех сторон)..
    проблема номер раз
    приходит письмо IdMessage1.Headers.Values['Content-Type'] показывает Windows-1251 а выводит что то типа Qepbhq иль на подобии
    пробовал разбирать письмо перебором частей
    [Code]for i:= 0 to IdMessage1.MessageParts.Count-1 do begin[/Code]
    но IdMessage1.MessageParts.Count всегда =0
    указывания
    [Code]procedure TForm1.IdMessage1InitializeISO(var VHeaderEncoding: Char;
     var VCharSet: string);
    begin
       VCharSet:='windows-1251';
       VHeaderEncoding := 'Q';//B
    end;[/Code]
    толку не дают
    настройка IdMessage1 на Windows-1251 аналогично..эффект 0...перекомпилить indy тож не могу..каких то файлов не хватает(если можно носом в ссылку где можно качнуть) а то на http://www.indyproject.org не работает качалка...

    заранее спасибо
  • Anatoly Podgoretsky © (29.01.09 13:50) [1]
    > ther  (29.01.2009 13:06:00)  [0]

    Какие у тебя заголовки в письме, какая реальная кодировка?
  • ther (29.01.09 13:54) [2]
    из bat
    Content-Type: text/plain; charset=windows-1251
  • Anatoly Podgoretsky © (29.01.09 16:09) [3]
    Content-Type, если он относится к нужному куску указан правильно, а какой реальный текст в этом куске?
  • ther (29.01.09 16:22) [4]
    пасиб но уже не не нужно..я перескочил на ics...indy по описанию уж сильно глюкавая..ics хоть безгеморно кодировку определяет...кроме некоторых
  • Прог (10.02.09 17:31) [5]
    with LastGeneratedHeaders do
     begin
       {CC: If From has no Name field, use the Address field as the Name field by setting last param to True (for SA)...}
       Values['From'] := EncodeAddress(FromList, HeaderEncoding, TransferHeader, ISOCharSet, True); {do not localize}
       Values['Subject'] := Subject;//EncodeHeader(Subject, [], HeaderEncoding, TransferHeader, ISOCharSet); {do not localize}
       Values['To'] := EncodeAddress(Recipients, HeaderEncoding, TransferHeader, ISOCharSet); {do not localize}
       Values['Cc'] := EncodeAddress(CCList, HeaderEncoding, TransferHeader, ISOCharSet); {do not localize}
       {CC: SaveToFile sets FGenerateBCCListInHeader to True so that BCC names are saved
        when saving to file and omitted otherwise (as required by SMTP)...}
       if FGenerateBCCListInHeader = False then begin
         Values['Bcc'] := ''; {do not localize}
       end else begin
         Values['Bcc'] := EncodeAddress(BCCList, HeaderEncoding, TransferHeader, ISOCharSet); {do not localize}
       end;
  • Прог (10.02.09 19:00) [6]
    Это в модуле IdMessage.pas надо исправить. И перекомпилить IndyProtocolsX.dpk
  • Прог (11.02.09 12:47) [7]
    или написать такую штуку: SysLocale.PriLangID := LANG_UKRAINIAN;
  • spasius (25.04.09 17:33) [8]
    подобная проблема есть и в HTTPServer.
    решения данной проблемы нигде нет.
    может кто что подскажет?
  • Mark (23.06.09 00:06) [9]
    Прог, ты гений! :-)

    Я сколько искал решение и вот как все просто -

    SysLocale.PriLangID := LANG_UKRAINIAN;

    Спасибо!!!
  • Прог (06.07.09 12:03) [10]
    У меня строка "SysLocale.PriLangID := LANG_UKRAINIAN;" добавлина вот так:
    pPostMessage := TIdMessage.Create(self);
       try
         pPostMessage.Date := now;
         pPostMessage.Recipients.Add.Address := 'xxxx@telnet.ua';
         pPostMessage.From.Address := 'xxxx@telnet.ua';
         pPostMessage.From.Name := cCurrentUserName;
         SysLocale.PriLangID := LANG_UKRAINIAN;      pPostMessage.CharSet := 'windows-1251';
         pPostMessage.ContentType := 'text/plain; charset=windows-1251';
         pPostMessage.ContentTransferEncoding := 'quoted-printable';
  • Дмитрий Белькевич (28.07.09 00:51) [11]

    > подобная проблема есть и в HTTPServer. решения данной проблемы
    > нигде нет.может кто что подскажет?


    Байты, вообще, везде одинаковые (с). Если иначе никак - то можно побайтно сравнить, что куда отдаётся. Сам 9-ку правил слегка на 2009-й делфе. Как я понял (по куче хинтов), её вообще не затачивали под работу на 2009-й. Ничего - мозг благополучно вправлен, HTTPServer 9-ки нормально заработал. Где-то 3-4 часа работы... Всё в юникодовость упирлось, что и ожидалось.
  • demin_as (05.04.11 13:09) [12]
    Удалено модератором
    Примечание: спам
  • specialist_ © (21.08.12 20:25) [13]
    Удалено модератором
  • specialist_ © (21.08.12 20:26) [14]
    Посмотрите, в этой теме решение
    http://specialistnotes.blogspot.com/2012/08/delphi-indy-10.html
 
Конференция "Сети" » indy 10(pop smpt) и кодировка [WinXP]
Есть новые Нет новых   [134436   +21][b:0][p:0]