![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Получение почты в Delphi [D7, XP]
DimOk © (2007-08-27 12:23:00)Добрый день всем. Хочу поинтересоваться, как можно сохранить прикрепленные файлы к письму.
procedure TForm1.Button1Click(Sender: TObject);
var MyMessage: TIdMessage;
CountMessages: Integer;
attach: TIDAttachment;
begin
MyMessage := TIdMessage.Create(nil);
IdPOP31.Connect();
CountMessages := IdPOP31.CheckMessages();
while CountMessages > 0 do begin
if IdPOP31.Retrieve(CountMessages,MyMessage) = True then begin
RichEdit1.Lines.Assign(MyMessage.Body);
attach := TIDAttachment.Create(MyMessage.MessageParts);
//А дальше я не знаю что делать (касательно прикрепленных файлов)
//attach.SaveToFile(const FileName: TFeliName): Boolean - как работает эта функция в хелпе нет ни каких данных и примеров по indy компонентам.
end;
CountMessages := CountMessages - 1;
end;
ShowMessage(IntToStr(IdPOP31.CheckMessages()));
MyMessage.Free;
IdPOP31.Disconnect;
end;
DimOk (2007-08-28 15:18:00) [1]
> http://ru.wikipedia.org/wiki/%D0%9A%D0%9E%D0%98-8
>
> Берете каждый символ строки и, если его код больше 127 ($79),
> заменяете на нужный символ из windows-1251
Спасибо.
Всем большое спасибо. Если эта тема больше ни каму не интересна предлогаю ее закрыть.
umbra (2007-08-28 15:09:00) [2]
> надо перегнать строку в windows-1251,
надо
> Дайте напрвление пожалуйсто.
http://ru.wikipedia.org/wiki/%D0%9A%D0%9E%D0%98-8
Берете каждый символ строки и, если его код больше 127 ($79), заменяете на нужный символ из windows-1251
DimOk (2007-08-28 15:03:00) [3]
> нельзя. декодировать надо только само название, а не все
> значение FileName. См. [60]
Получилось, достать имя файла, но при декодировании всеравно выходит чушь, но теперь без спец символов и сохраняеся, т.е. я так думаю надо перегнать строку в windows-1251, если это так, то как это зделать? Дайте напрвление пожалуйсто.
DimOk (2007-08-28 13:37:00) [4]
> есть ли оналог функции Delin из VB или здесь другой подход
> нужен?
аналог функции Delim :) извеняюсь
DimOk (2007-08-28 13:34:00) [5]
> нельзя. декодировать надо только само название, а не все
> значение FileName. См. [60]
Тогда вопрос, как эту строку можно разобрать по разделителям, есть ли оналог функции Delin из VB или здесь другой подход нужен?
umbra (2007-08-28 13:31:00) [6]
> Можно ли так делать,
нельзя. декодировать надо только само название, а не все значение FileName. См. [60]
DimOk (2007-08-28 13:28:00) [7]file_name := IdDecoderMIME1.DecodeString(String(TIdAttachment(MyMessage.MessageParts.Items[i] ).FileName));
Можно ли так делать, что то ошибочка вылетает: Uneven size in decode ToStream
DimOk (2007-08-28 12:50:00) [8]
> для Base64 есть, например, TIdDecoderMIME или функция DecodeString
> из модуля EncdDecd.pas
> для koi8-r - полно реализаций на делфи в интернете, да и
> свою написать можно.
Большое спасибо за помощь. :)
umbra (2007-08-28 12:45:00) [9]для Base64 есть, например,
TIdDecoderMIMEили функцияDecodeStringиз модуляEncdDecd.pas
для koi8-r - полно реализаций на делфи в интернете, да и свою написать можно.
DimOk (2007-08-28 12:30:00) [10]
> Это все можно зделать в Delphi?
Вернее в каком направлении капать.
DimOk (2007-08-28 12:10:00) [11]
> после первого знака вопроса - кодировка названия
> после второго - способ кодировки для передачи, В - Base64,
> Q - quoted-printable
> после третьего и до последнего - само название. Чтобы его
> восстановить, надо перевести из Base64 - получится название
> в koi8-r. Затем надо из koi8-r перевести в windows-1251
> (если надо)
Это все можно зделать в Delphi?
umbra (2007-08-28 12:05:00) [12]
> =?koi8-r?B?99nH0tXay8E=?=
после первого знака вопроса - кодировка названия
после второго - способ кодировки для передачи, В - Base64, Q - quoted-printable
после третьего и до последнего - само название. Чтобы его восстановить, надо перевести из Base64 - получится название в koi8-r. Затем надо из koi8-r перевести в windows-1251 (если надо)
DimOk (2007-08-28 11:46:00) [13]Я уже на 100% уверен что дело в имени файла т.к. оно содержит спецсимволы (если прикрепленный файл на русском языке)
DimOk (2007-08-28 11:43:00) [14]
> точно не из рантайм.
Извеняюсь в отладчике, но при компиляции не ругался.
DimOk (2007-08-28 11:38:00) [15]К стати большое спасибо umbra за то что помог и помогает разбираться с этой задачей, но пока она выполняется до конца (русские имена так и не сохраняются)........:(
umbra (2007-08-28 11:33:00) [16]
> омпилировалась и текты ошибок были из RUN Time
вот это:
> Пишет - ундекларе идентифер Items[i]
точно не из рантайм.
DimOk (2007-08-28 11:33:00) [17]
> Продолжает лапшу на уши вешать.
У меня файлы уже сохраняютсятолько с англ. названиями
По поводу компиляции я даже и не спрашивал..... если что. А вопрос как "русские" файлы сохранить.
DimOk (2007-08-28 11:31:00) [18]
> Ты не здесь обманывал, речи о сохранение и быть не могло,
> у тебя даже программа не компилировалась!
Ошибаетесь, компилировалась и текты ошибок были из RUN Time
Anatoly Podgoretsky (2007-08-28 11:30:00) [19]> umbra (28.08.2007 11:24:49) [49]
Продолжает лапшу на уши вешать.
DimOk (2007-08-28 11:29:00) [20]
> > r?B?09fJztjJLnJ0Zg.zip
>
> полный бред. такого быть не может.
'=?koi8-r?B?99nH0tXay8E=?=.xml'
имя файла Выгрузка.xml