Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с кодировкой при получении почты 
:(
    Опции темы
Rusman
Дата 7.4.2008, 07:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 4.5.2006
Где: Пермь

Репутация: нет
Всего: нет



Сделал почтового клиента.
Тестирую. Отправил сообщение с Оутлук Експресс.
Принимаю сообщение через idPOP3 на своем клиенте.
Хочу вывести тему edit1.text:=idmessage1.subject;
У меня выводится такая штука =?koi8-r?B?8NLP18XSy8E=?=
Что делать? как сделать чтоб клиент мой понимал кодировку?
Если отправляю со своего клиента то обратно принимает в нормальном виде 

PM MAIL ICQ Skype   Вверх
WaReZMEN
Дата 7.4.2008, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



попробуи Utf8ToAnsi
PM MAIL ICQ   Вверх
Alexeis
Дата 7.4.2008, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



  Cудя по началу "koi8" это не UTF8  smile 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Wolfgan
Дата 8.4.2008, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 20.3.2008

Репутация: нет
Всего: нет



Толком не понял вопроса, но вообще для Indy надо еще Base64 пользовать. Особенно если хотишь иметь заголовки на русском.
Как вариант посмотри тут:
http://www.delphiworld.narod.ru/base/recode_email_msg.html

PM MAIL   Вверх
rni
Дата 14.4.2008, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 10.3.2004

Репутация: нет
Всего: 3



В Инди приходится перекодировать самому заголовки
Можно использовать эту функцию.
Код

function KOI8_RToUTF16Str(const s: string): wideString;
   // Converts an KOI8-R string into an UTF-16 wideString.
   // No special conversions (e.g. on line breaks) are done.
var
  i, j: integer;

  function KOI8_RToUTF16Char(const P: Char): WideChar;
  begin
    case ord(P) of
      $80: result := #$2500; // BOX DRAWINGS LIGHT HORIZONTAL
      $81: result := #$2502; // BOX DRAWINGS LIGHT VERTICAL
      $82: result := #$250C; // BOX DRAWINGS LIGHT DOWN AND RIGHT
      $83: result := #$2510; // BOX DRAWINGS LIGHT DOWN AND LEFT
      $84: result := #$2514; // BOX DRAWINGS LIGHT UP AND RIGHT
      $85: result := #$2518; // BOX DRAWINGS LIGHT UP AND LEFT
      $86: result := #$251C; // BOX DRAWINGS LIGHT VERTICAL AND RIGHT
      $87: result := #$2524; // BOX DRAWINGS LIGHT VERTICAL AND LEFT
      $88: result := #$252C; // BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
      $89: result := #$2534; // BOX DRAWINGS LIGHT UP AND HORIZONTAL
      $8A: result := #$253C; // BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
      $8B: result := #$2580; // UPPER HALF BLOCK
      $8C: result := #$2584; // LOWER HALF BLOCK
      $8D: result := #$2588; // FULL BLOCK
      $8E: result := #$258C; // LEFT HALF BLOCK
      $8F: result := #$2590; // RIGHT HALF BLOCK
      $90: result := #$2591; // LIGHT SHADE
      $91: result := #$2592; // MEDIUM SHADE
      $92: result := #$2593; // DARK SHADE
      $93: result := #$2320; // TOP HALF INTEGRAL
      $94: result := #$25A0; // BLACK SQUARE
      $95: result := #$2219; // BULLET OPERATOR
      $96: result := #$221A; // SQUARE ROOT
      $97: result := #$2248; // ALMOST EQUAL TO
      $98: result := #$2264; // LESS-THAN OR EQUAL TO
      $99: result := #$2265; // GREATER-THAN OR EQUAL TO
      $9A: result := #$00A0; // NO-BREAK SPACE
      $9B: result := #$2321; // BOTTOM HALF INTEGRAL
      $9C: result := #$00B0; // DEGREE SIGN
      $9D: result := #$00B2; // SUPERSCRIPT TWO
      $9E: result := #$00B7; // MIDDLE DOT
      $9F: result := #$00F7; // DIVISION SIGN
      $A0: result := #$2550; // BOX DRAWINGS DOUBLE HORIZONTAL
      $A1: result := #$2551; // BOX DRAWINGS DOUBLE VERTICAL
      $A2: result := #$2552; // BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
      $A3: result := #$0451; // CYRILLIC SMALL LETTER IO
      $A4: result := #$2553; // BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
      $A5: result := #$2554; // BOX DRAWINGS DOUBLE DOWN AND RIGHT
      $A6: result := #$2555; // BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
      $A7: result := #$2556; // BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
      $A8: result := #$2557; // BOX DRAWINGS DOUBLE DOWN AND LEFT
      $A9: result := #$2558; // BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
      $AA: result := #$2559; // BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
      $AB: result := #$255A; // BOX DRAWINGS DOUBLE UP AND RIGHT
      $AC: result := #$255B; // BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
      $AD: result := #$255C; // BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
      $AE: result := #$255D; // BOX DRAWINGS DOUBLE UP AND LEFT
      $AF: result := #$255E; // BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
      $B0: result := #$255F; // BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
      $B1: result := #$2560; // BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
      $B2: result := #$2561; // BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
      $B3: result := #$0401; // CYRILLIC CAPITAL LETTER IO
      $B4: result := #$2562; // BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
      $B5: result := #$2563; // BOX DRAWINGS DOUBLE VERTICAL AND LEFT
      $B6: result := #$2564; // BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
      $B7: result := #$2565; // BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
      $B8: result := #$2566; // BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
      $B9: result := #$2567; // BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
      $BA: result := #$2568; // BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
      $BB: result := #$2569; // BOX DRAWINGS DOUBLE UP AND HORIZONTAL
      $BC: result := #$256A; // BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
      $BD: result := #$256B; // BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
      $BE: result := #$256C; // BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
      $BF: result := #$00A9; // COPYRIGHT SIGN
      $C0: result := #$044E; // CYRILLIC SMALL LETTER YU
      $C1: result := #$0430; // CYRILLIC SMALL LETTER A
      $C2: result := #$0431; // CYRILLIC SMALL LETTER BE
      $C3: result := #$0446; // CYRILLIC SMALL LETTER TSE
      $C4: result := #$0434; // CYRILLIC SMALL LETTER DE
      $C5: result := #$0435; // CYRILLIC SMALL LETTER IE
      $C6: result := #$0444; // CYRILLIC SMALL LETTER EF
      $C7: result := #$0433; // CYRILLIC SMALL LETTER GHE
      $C8: result := #$0445; // CYRILLIC SMALL LETTER HA
      $C9: result := #$0438; // CYRILLIC SMALL LETTER I
      $CA: result := #$0439; // CYRILLIC SMALL LETTER SHORT I
      $CB: result := #$043A; // CYRILLIC SMALL LETTER KA
      $CC: result := #$043B; // CYRILLIC SMALL LETTER EL
      $CD: result := #$043C; // CYRILLIC SMALL LETTER EM
      $CE: result := #$043D; // CYRILLIC SMALL LETTER EN
      $CF: result := #$043E; // CYRILLIC SMALL LETTER O
      $D0: result := #$043F; // CYRILLIC SMALL LETTER PE
      $D1: result := #$044F; // CYRILLIC SMALL LETTER YA
      $D2: result := #$0440; // CYRILLIC SMALL LETTER ER
      $D3: result := #$0441; // CYRILLIC SMALL LETTER ES
      $D4: result := #$0442; // CYRILLIC SMALL LETTER TE
      $D5: result := #$0443; // CYRILLIC SMALL LETTER U
      $D6: result := #$0436; // CYRILLIC SMALL LETTER ZHE
      $D7: result := #$0432; // CYRILLIC SMALL LETTER VE
      $D8: result := #$044C; // CYRILLIC SMALL LETTER SOFT SIGN
      $D9: result := #$044B; // CYRILLIC SMALL LETTER YERU
      $DA: result := #$0437; // CYRILLIC SMALL LETTER ZE
      $DB: result := #$0448; // CYRILLIC SMALL LETTER SHA
      $DC: result := #$044D; // CYRILLIC SMALL LETTER E
      $DD: result := #$0449; // CYRILLIC SMALL LETTER SHCHA
      $DE: result := #$0447; // CYRILLIC SMALL LETTER CHE
      $DF: result := #$044A; // CYRILLIC SMALL LETTER HARD SIGN
      $E0: result := #$042E; // CYRILLIC CAPITAL LETTER YU
      $E1: result := #$0410; // CYRILLIC CAPITAL LETTER A
      $E2: result := #$0411; // CYRILLIC CAPITAL LETTER BE
      $E3: result := #$0426; // CYRILLIC CAPITAL LETTER TSE
      $E4: result := #$0414; // CYRILLIC CAPITAL LETTER DE
      $E5: result := #$0415; // CYRILLIC CAPITAL LETTER IE
      $E6: result := #$0424; // CYRILLIC CAPITAL LETTER EF
      $E7: result := #$0413; // CYRILLIC CAPITAL LETTER GHE
      $E8: result := #$0425; // CYRILLIC CAPITAL LETTER HA
      $E9: result := #$0418; // CYRILLIC CAPITAL LETTER I
      $EA: result := #$0419; // CYRILLIC CAPITAL LETTER SHORT I
      $EB: result := #$041A; // CYRILLIC CAPITAL LETTER KA
      $EC: result := #$041B; // CYRILLIC CAPITAL LETTER EL
      $ED: result := #$041C; // CYRILLIC CAPITAL LETTER EM
      $EE: result := #$041D; // CYRILLIC CAPITAL LETTER EN
      $EF: result := #$041E; // CYRILLIC CAPITAL LETTER O
      $F0: result := #$041F; // CYRILLIC CAPITAL LETTER PE
      $F1: result := #$042F; // CYRILLIC CAPITAL LETTER YA
      $F2: result := #$0420; // CYRILLIC CAPITAL LETTER ER
      $F3: result := #$0421; // CYRILLIC CAPITAL LETTER ES
      $F4: result := #$0422; // CYRILLIC CAPITAL LETTER TE
      $F5: result := #$0423; // CYRILLIC CAPITAL LETTER U
      $F6: result := #$0416; // CYRILLIC CAPITAL LETTER ZHE
      $F7: result := #$0412; // CYRILLIC CAPITAL LETTER VE
      $F8: result := #$042C; // CYRILLIC CAPITAL LETTER SOFT SIGN
      $F9: result := #$042B; // CYRILLIC CAPITAL LETTER YERU
      $FA: result := #$0417; // CYRILLIC CAPITAL LETTER ZE
      $FB: result := #$0428; // CYRILLIC CAPITAL LETTER SHA
      $FC: result := #$042D; // CYRILLIC CAPITAL LETTER E
      $FD: result := #$0429; // CYRILLIC CAPITAL LETTER SHCHA
      $FE: result := #$0427; // CYRILLIC CAPITAL LETTER CHE
      $FF: result := #$042A; // CYRILLIC CAPITAL LETTER HARD SIGN
      else
        result := WideChar(ord(P));
    end;
  end;
begin
  j := length(s);
  setLength(Result, j);
  for i := 1 to j do
    Result[i] := KOI8_RToUTF16Char(s[i]);
end;



Но у меня возникли проблмы при получении вложений с русскими буквами. в поле FileName получаю вместо русских букв знак подчеркивания "_"
--------------------
r-xr-xr-x 3 мусорных ведра корня 14312 9 января 2000 perl
PM MAIL ICQ   Вверх
Alexeis
Дата 14.4.2008, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(rni @  14.4.2008,  07:01 Найти цитируемый пост)
Но у меня возникли проблмы при получении вложений с русскими буквами. в поле FileName получаю вместо русских букв знак подчеркивания "_" 

  Попробуйте использовать юникодный шрифт (где есть все символы юникода).


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
rni
Дата 14.4.2008, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 10.3.2004

Репутация: нет
Всего: 3



Ну в общем разными шрифтами пробовал - бесполезно.
Вот пример заголовка ататчмента с названием файла русскими и английскими буквами

Код

Content-Type: application/msword;
        name="kitab__________________________________mod.dkitab__________________________________mod.doc"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
        filename="kitab__________________________________mod.dkitab__________________________________mod.doc"
Content-Description==?koi8-r?B?a2l0YWJf/snT1MvBINDP3sXLINcgxM/NwdvOycgg1dPMz9fJ0chfbW9kLmQ=?==?koi8-r?B?b2M=?=


Возможно, название файла можно взять из Content-Description. Осталось найти этот Content-Description в свойствах компонента.

Ну и вот, собственно, решение:
Код

            FileName := Copy(FMessage.MessageParts.Items[j].ExtraHeaders.Strings[0],1+pos('=',FMessage.MessageParts.Items[j].ExtraHeaders.Strings[0]),Length(FMessage.MessageParts.Items[j].ExtraHeaders.Strings[0])-pos('=',FMessage.MessageParts.Items[j].ExtraHeaders.Strings[0]));
            if Copy(FileName,1,11)='=?koi8-r?B?' then
               FileName:=KOI8_RToUTF16Str(
                  IdDecoderMime.DecodeString(
                    Copy(FileName,12,
                      pos('=?',
                        Copy(FileName,12,Length(FileName)-11))-1))) ;



Это сообщение отредактировал(а) rni - 14.4.2008, 14:15
--------------------
r-xr-xr-x 3 мусорных ведра корня 14312 9 января 2000 perl
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0984 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.