Добрых суток! Работаю с MS Exchange 2k через TIdIMAP4 (Indy 9). После успешного подключения вызываю метод ListMailBoxes для получения списка папок. И имею проблему - если в их наименовании используются русские символы (а английскими все ok), то они возращаются в какой-то мутной кодировке (типа "&BBgEQQRFBD4ENARPBEkEOAQ1-"). Все декодеры перепробовал, ничего не помогает. Может кто знает как надо преобразовывать эту гадость до нормальной русской?
Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице. Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.
09-04-2010 02:57
Эта кодировка называется IMAP-UTF7.
Решение проблемы РАСКОДИРОВКИ было найдёно на sql.ru, за что автору огромное спасибо.
Однако это решило лишь одну проблему, как получить список русских папок. К сожалению, выбрать эти папки (IdImap.SelectMailBox) у меня пока никак не получается, соотвественно и работать с ними нормально - тоже. Причём не получается их выбрать ни указав название ящика (с русскими буквами), ни передав в качестве параметра название ящика полученное с сервера (вида &BBgEQQRFBD4ENARPBEkEOAQ1-).
function UTF7ToWideString(const S: string): WideString;
begin
Result := StringToWideStringEx(S, CP_UTF7);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
I:integer;
SL:TStringList;
M,G:string;
begin
Memo2.Clear;
Memo3.Clear;
SL:=TStringList.Create;
Imap.Connect(True);
try
Imap.ListMailBoxes(SL);
for I := 0 to SL.Count - 1 do
begin
Memo3.Lines.Add(SL.Strings[i]);
Application.ProcessMessages;
M := StringReplace(SL.Strings[i], '&', '+',[rfReplaceAll, rfIgnoreCase]);
G := StringReplace(M, ',', '/',[rfReplaceAll, rfIgnoreCase]);
Memo2.Lines.Add(UTF7ToWideString(G));
end;
finally
SL.Free;
end;
end;
15-06-2004 14:10 | Вопрос к автору: запрос дополнительной информации
К сожалению, все (хотя, надо признать, не многочисленные) попытки успехом не увенчались. Что забавно, все скаченные из сети примеры работы с IMAP'ом различных авторов так же болели этой проблемой. Так что вопрос остается открытым...
15-06-2004 13:50 | Вопрос к автору: запрос дополнительной информации
Получилось разобратся?
Я уперся в аналогичную проблему и решениянигде найт не могу. И вообще что-то с IMAP4 разобратся не получается. Задача у меня такая же осуществить работу с Exchange - сервером через компоненты Indy. Если есть рабочий пример вышли пожалуйста.
Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter. Функция может не работать в некоторых версиях броузеров.