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 10:20:00) [41]

TIdAttachment(Items[i]).SaveToFile(TIdAttachment(Items[i]).FileName);
После этой строки теперь ругается пишет что не может сохранить.


DimOk   (2007-08-28 10:09:00) [42]


> MyMessage.MessageParts - это постоянно одно и тоже сообщение,
>  т.е. нет перехода к следующему. Как его осуществить не
> подскажите?

Все понял
IdPOP31.Retrieve(CountMessages,MyMessage)


DimOk   (2007-08-28 10:03:00) [43]

Понял в чем дело цикл - у меня получается черт знает каой:
CountMessages := IdPOP31.CheckMessages();
while CountMessages > 0 do begin
  with MyMessage.MessageParts do begin
    for i := 0 to Count - 1 do begin
      if Items[i] is TIdAttachment then begin
           TIdAttachment(Items[i]).SaveToFile(TIdAttachment(Items[i]).FileName);
      end;
    end;
   end;
  CountMessages := CountMessages - 1;
end;
MyMessage.MessageParts - это постоянно одно и тоже сообщение, т.е. нет перехода к следующему. Как его осуществить не подскажите?


DimOk   (2007-08-28 10:01:00) [44]


> Ну есть же демо-проект в составе Инди - maildemo.dpr, почему
> не изучить его ?

C:\Program Files\Borland\Delphi7\Demos\Indy - если это там, то это текстовый фай в котором содержиться следующее:

Delphi 7
Indy V9 Demos

===========================

Indy V9 Demos

Demo applications for Indy V9 are available from the
downloads section on the Indy site at:

http://www.nevrona.com/indy

As new demos are constantly being built and tested,
this is the most up to date location for demo
downloads.

If you have any problems with demos please join the
"Indy Demos" group at yahoo groups, and report them
there:

http://groups.yahoo.com/group/Indy-Demos/

http://www.nevrona.com/indy- на этот ресурс я заходил но что там скачевать так и не понял...


Сергей М.   (2007-08-28 09:44:00) [45]


> DimOk ©   (28.08.07 09:41) [26]


Ну есть же демо-проект в составе Инди - maildemo.dpr, почему не изучить его ?


DimOk   (2007-08-28 09:41:00) [46]


> Может быть у меня Exchange забирает почту быстрее чем программа.
> ..? :)
> Попробую с другим ящиком....

Нет такая же шняга


DimOk   (2007-08-28 09:33:00) [47]


> Проверил - написал ShowMessage(IntToStr(MyMessage.MessageParts))
> выдает нуль, хотя сообщение содержит два прикрепления...
> :(

Может быть у меня Exchange забирает почту быстрее чем программа...? :)
Попробую с другим ящиком....


DimOk   (2007-08-28 09:28:00) [48]


> with MyMessage.MessageParts do
>  for i := 0 to Count - 1 do
>       if Items[i] is TIdAttachment then
>            TIdAttachment(Items[i]).SaveToFile(TIdAttachment(Items[i]).
> FileName);

Вроде все ништяк - уже обрабовался....но....
Пишет List index out of bounds (0)
Проверил - написал ShowMessage(IntToStr(MyMessage.MessageParts)) выдает нуль, хотя сообщение содержит два прикрепления...:(


umbra   (2007-08-27 18:02:00) [49]

with MyMessage.MessageParts do
 for i := 0 to Count - 1 do
      if Items[i] is TIdAttachment then
           TIdAttachment(Items[i]).SaveToFile(TIdAttachment(Items[i]).FileName);


DimOK   (2007-08-27 17:24:00) [50]


> > ТОгда ты что-то путаешь.
> >
> > "ругани" именно на TIdMessageParts быть никак не должно.
>
> >
>
> т.е. я пишу var: mess_parts: TIdMessageParts; и все должно
> быть ништяк.....
> так пишу......
>
> И правда не ругается...:)
> Буду ковырять дальше.

но тогда у mess_parts нету функции SaveToFile


DimOK   (2007-08-27 17:08:00) [51]


> ТОгда ты что-то путаешь.
>
> "ругани" именно на TIdMessageParts быть никак не должно.
>

т.е. я пишу var: mess_parts: TIdMessageParts; и все должно быть ништяк.....
так пишу......

И правда не ругается...:)
Буду ковырять дальше.


Сергей М.   (2007-08-27 17:04:00) [52]


> он у меня используется


ТОгда ты что-то путаешь.

"ругани" именно на TIdMessageParts быть никак не должно.


DimOK   (2007-08-27 17:00:00) [53]


> Поищите поиском по тексту модулей и добавьте нужный в юзесы.

содержиться в IdMessage, но он у меня используется.


DimOK   (2007-08-27 16:57:00) [54]


> > Где и как ты "искал" - непонятно)
>
> Search->Find in Files;Find искал TIdMessageParts

Сорри ступи, нашел :)


DimOK   (2007-08-27 16:55:00) [55]


> Где и как ты "искал" - непонятно)

Search->Find in Files;Find искал TIdMessageParts


Сергей М.   (2007-08-27 16:47:00) [56]


> Поиск не дал результата


Быть того не может.

Если у тебя не возникли проблемы с ид-ром TIdMessage, то и с TIdMessageParts тоже не должны возникнуть - оба ид-ра объявлены в одном и том же юните IdMessage.pas.

Где и как ты "искал" - непонятно)


DimOK   (2007-08-27 16:43:00) [57]


> но в 9-ке все равно где-то объявлен тип TIdMessageParts.
>  Поищите поиском по тексту модулей и добавьте нужный в юзесы.
>

Поиск не дал результата.....:(


DimOK   (2007-08-27 16:41:00) [58]

TIdMessage содержит MessageParts у которого нет функции SaveToFile(......), для отправки сообщения я использовал следующее:
TIDAttachment.Create(MainForm.MyMessage.MessageParts,'Выгрузка.xml'); и все нормально проходит, а при получении я не знаю как добраться именно до прикрепленных данных
быть может я не правильно использую TIDAttachment....


umbra   (2007-08-27 16:17:00) [59]

но в 9-ке все равно где-то объявлен тип TIdMessageParts. Поищите поиском по тексту модулей и добавьте нужный в юзесы.


DimOK   (2007-08-27 16:06:00) [60]


> Ну тогда дело плохо. У Вас какая версия Инди? Я про 10-ую.

Тогда все понятно 9.00.10 :)


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

Наверх

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