Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   recibir correo con adjuntos (https://www.clubdelphi.com/foros/showthread.php?t=32318)

smessina 02-06-2006 02:51:22

recibir correo con adjuntos
 
estuve buscando info al respecto pero los hilos que encontre no los entendi muy bien, estuve copiando y pegando codigo sin entender demasiado pero no pude resolver lo siguiente:

necesito descargar un mail y los adjuntos de estos, usando indy tengo delphi 7

copiando y pegando codigo hice lo siguiente (repito: sin entender como es el proceso para descargar y guardar en una carpeta un adjunto)

Código Delphi [-]
procedure Tfppal.suiButton7Click(Sender: TObject); 
var
    n,   nummsgs    : integer; 
  x:integer;
 begin
    Memo1.Lines.Clear;  
 //Conectamos! 
  idpop31.Connect(0);
  //Obtenemos el numero de emails que tenemos  
 NumMsgs:=idpop31.CheckMessages;
    Memo1.lines.add( 'Emails:' +IntToStr(NumMsgs) );
    for n:=1 to NumMsgs do begin
           for x:=0 to Pred( mail.MessageParts.Count) do
         begin
            if (mail.MessageParts.Items[x] is TIdAttachment) then
           begin // si es attchamente lo guardo
               Memo1.Lines.Add( TIdAttachment( mail.MessageParts.Items[x]).Filename);
               TIdAttachment(mail.MessageParts.Items[x]).SaveToFile(ExtractFilePath(GetModuleName(hInstance)) +
               TIdAttachment(mail.MessageParts.Items[x]).Filename);
               end;
           next;
           end;

            idpop31.RetrieveHeader(n,mail);
     Memo1.Lines.Add( 'Email Nº:'+IntToStr(n)+' De:'+mail.From.Text+' Tema:'+mail.Subject );
     mail.Clear;
   end;
   idpop31.Disconnect;
   end;


esto me descarga los encabezados de los mail y me los agregar a memo1 pero no me descarga los adjuntos.

alguna idea de como se hace o de que me està faltando?


gracias por su tiempo.

un abrazo

epuigdef 02-06-2006 08:10:53

Buenas!

Tengo un programa que me descarga correos, y no veo mucha diferencia con el tuyo. De todas formas, donde tu guardas el adjunto:

Código Delphi [-]
TIdAttachment(mail.MessageParts.Items[x]).SaveToFile(ExtractFilePath(GetModuleName(hInstance)) +
               TIdAttachment(mail.MessageParts.Items[x]).Filename);

yo tengo el siguiente código:

Código Delphi [-]
if (Msg.MessageParts.Items[intIndex] is TIdAttachmentFile) then
begin
  ata := TIdAttachmentFile(Msg.MessageParts.Items[intIndex]);
  ata.SaveToFile('.\'+ata.FileName);
end;

Básicamente, lo guardo en el directorio del programa

Espero que te sirva

Edu

smessina 02-06-2006 18:59:49

gracias por contestar epuigdef
 
gracias por contestar epuigdef


todavia no pude probarlo porque no llegue a casa.
... pero como que tienes declarado a ata en el ejemplo de codigo?


Código Delphi [-]
ata := TIdAttachmentFile(Msg.MessageParts.Items[intIndex]);
  ata.SaveToFile('.\'+ata.FileName);

gracias por tu tiempo.

un abrazo

smessina 04-06-2006 17:37:40

ya lo solucione
 
gracias por su ayuda.


ya pude solucionarlo

me faltaba poner

Código Delphi [-]
idpop31.Retrieve(n,mail);


el codigo quedaria asi
Código Delphi [-]
procedure Tfppal.suiButton7Click(Sender: TObject); 
var
    n,   nummsgs    : integer; 
  x:integer;
 begin
    Memo1.Lines.Clear;  
 //Conectamos! 
  idpop31.Connect(0);
  //Obtenemos el numero de emails que tenemos  
 NumMsgs:=idpop31.CheckMessages;
    Memo1.lines.add( 'Emails:' +IntToStr(NumMsgs) );
    for n:=1 to NumMsgs do begin
           idpop31.Retrieve(n,mail);
           for x:=0 to Pred( mail.MessageParts.Count) do
         begin
            if (mail.MessageParts.Items[x] is TIdAttachment) then
           begin // si es attchamente lo guardo
               Memo1.Lines.Add( TIdAttachment( mail.MessageParts.Items[x]).Filename);
               TIdAttachment(mail.MessageParts.Items[x]).SaveToFile(ExtractFilePath(GetModuleName(hInstance)) +
               TIdAttachment(mail.MessageParts.Items[x]).Filename);
               end;
           next;
           end;

            idpop31.RetrieveHeader(n,mail);
     Memo1.Lines.Add( 'Email Nº:'+IntToStr(n)+' De:'+mail.From.Text+' Tema:'+mail.Subject );
     mail.Clear;
   end;
   idpop31.Disconnect;

   end;

epuigdef 05-06-2006 07:39:21

Ok! Felicidades por solucionarlo!

De todas formas, por si alguien más visita este hilo, te contesto la pregunta:

ata está definido como TIdAttachmentFile

Un saludo

Edu


La franja horaria es GMT +2. Ahora son las 16:45:10.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi