![]() |
|
|
|
|
#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 есть проблемы с использованием русских шрифтов
|