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

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

Сохранить вложение из idMessage [D6, Win2k, WinXP]


Progh ©   (2005-01-24 16:57:00) 

Народ, оочень нужно, помогите сохранить приложеный файл из idMessage(idPOP3) под определенным именем, содержимое которого я скачал с ящика


stone   (2005-01-25 09:30:00) [1]

Выдержка из справки:
MessageParts can contain two TIdMessagePart descendants: TIdText and TIdAttachment.

Во-первых
> Attach := TIdAttachment.Create(idMessage.MessageParts);

Это вообще не понятно

Во вторых, в цикле for j := 0 to idMessage.MessageParts.Count-1 do следует перебирать MessageParts.Items[j] и проверять их на соответствия TIdText или TIdAttachment, а ззатем уже принимать решение по обработки соответствующей TIdMessagePart


Progh   (2005-01-24 20:27:00) [2]

var
 mc, i, j: integer;
 idMessage: TidMessage;
 _Attach: TIdAttachment;
 fname: String;
begin

 idPop3.Username := User;
 idPop3.Password := Password;
 idPop3.Host := Host;
 idPop3.Port := 110;

   if idPOP3.Connected = true then
     idPOP3.Disconnect;
   idPOP3.Connect;
   mc := idPOP3.CheckMessages;
   Result := mc;
   idMessage := TidMessage.Create(nil);
   for i := 1 to mc do
   begin
     IdMessage.Clear;
     idPOP3.Retrieve(i, IdMessage);

     _Attach := TIdAttachment.Create(idMessage.MessageParts);

     for j := 0 to idMessage.MessageParts.Count-1 do
     begin
 // Вот тут у меня почемуто в fName возвращается пустота, хотя приложение в письме 100% есть
       fName := SaveToDir + (_Attach as TIdAttachment).FileName;
       CopyFile(pchar(_Attach.StoredPathName), pchar(fName), true);
     end;

Почему fName = '' ?


stone   (2005-01-24 17:09:00) [3]

FileName := Path + (idMessage.MessageParts.Items[j] as TIdAttachment).FileName;
CopyFile(pchar(idMessage.MessageParts.Items[j].StoredPathName), pchar(FileName), true);


Наверх

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