Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Получение почты в Delphi [D7, XP]


Страницы:   1 2 3 4

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


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо