![]() |
|
#1
|
|||
|
|||
![]() Использую компоненты indy idPop3 и idMessage, для получения письма. Получаю, но там карякули. Что-то видать с кодировкой, что делать?
И еще вопрос: можно как-то получить все письма не удаляя их с сервера? А то для получения следующего, нужно удалить предыдущее. |
#2
|
|||
|
|||
![]() 1. IdPOP31.Retrieve(i, IdMessage1); получить i-тое письмо
IdPOP31.Delete(i); удалить i-тое письмо 2.Оценивай IdMessage1.CharSet если есть 'WINDOWS-1251' то переводи в UTF16 можно так: Код:
function DecodeStr(Text, Code: string): string; // Функция перекодировки из KOI8_R в UTF16, решает проблему с русской кодировкой type TKOI8_RToUTF16Str = function(const s: string): WideString; var DLLInstance: THandle; KOI8_RToUTF16Str: TKOI8_RToUTF16Str; begin // оценка кодировки if Pos('WINDOWS-1251', Code) <> 0 then result := Text else begin // загружаем библиотеку DLLInstance := LoadLibrary(pChar(ExtractFileDir(Application.ExeName) + 'KOI8_RToUTF16.dll')); @KOI8_RToUTF16Str := GetProcAddress(DLLInstance, 'KOI8_RToUTF16Str'); result := Text; FreeLibrary(DLLInstance); end; end; + библиотека, в исходнике прикреплена Последний раз редактировалось Admin, 24.06.2008 в 15:00. |
#3
|
|||
|
|||
![]() еще исполдьзуй Indy 10, а то в 9 есть проблемы с использованием русских шрифтов
|