Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Descargar archivo adjunto del outlook (https://www.clubdelphi.com/foros/showthread.php?t=52763)

mcalmanovici 30-01-2008 15:38:44

Descargar archivo adjunto del outlook
 
Hola gente:
estuve buscando en el foro y en google pero no encontré información acerca de lo que necesito.
Necesitaría poder bajar los archivos adjuntos que me mandan al outlook desde un programa de delphi. Estuve viendo que el manejo de mails se hace con los componentes indy pero no encuentro nada de información de bajar archivos adjuntos y como es la primera vez que tengo que incursionar en el tema no sé para donde salir.

Cualquier información será agradecida.

Muchas Gracias.

Mariano.

jachguate 30-01-2008 18:32:40

Si lo haces con Indy, outlook no tiene nada que ver, pues tu programa se conectará directamente al servidor de correo usando, por ejemplo, el protocolo pop3.

Al descargar un mensaje, este viene con sus adjuntos. Por ejemplo, con el código que adjunto obtendrías los adjuntos del primer mensaje que esté en el servidor.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  Msg: TIdMessage;
  Att: TIdAttachment;
  I: Integer;
begin
  IdPOP31.Connect;
  if IdPOP31.CheckMessages >= 1 then
  begin
    Msg := TIdMessage.Create(nil);
    try
      if IdPOP31.Retrieve(1, Msg) then
        for I := 0 to Msg.MessageParts.Count - 1 do
          if Msg.MessageParts.Items[i] is TIdAttachment then
          begin
            Att := TIdAttachment(Msg.MessageParts.Items[i]);
            Att.SaveToFile(Att.FileName);
          end;
    finally
      Msg.Free;
    end;
  end;
end;

Hasta luego.

;)

mcalmanovici 07-02-2008 17:50:10

Error en IdPOP31.connect
 
Gracias por el código.
Ahora estuve probando el código que me dejaste y me tira error cuando se va a conectar (en la línea IdPOP31.Connect). El error que tira es:
Project Project1.exe raised exception class EIdAlreadyConnected with message 'Already connected.'
Antes de todo yo le agregué los parametros de conexión que son:
Código Delphi [-]
  
  IdPOP31.Host := 'server5.server';
  IdPOP31.Port := 143;
  IdPOP31.Username := 'cualquiera@cualquiera.com';
  IdPOP31.Password := 'password';
  IdPOP31.Connect;

Muchas gracias por tu ayuda.

jachguate 07-02-2008 18:29:32

Por lo visto, ya está conectado a un servidor. Un cliente INDY puede conectarse a un solo servidor a la vez.

Hasta luego.

;)

mcalmanovici 07-02-2008 18:43:52

Mensaje de error.
 
jachguate, agradezco infinitamente tus respuestas sobre este tema.
Te comento que no estoy conectado con indy a ningún otro servidor.
Y ahora me aparece el siguiente mensaje; el anterior mensaje parece que aparecio una sola vez y después siempre aparece este:
Project Project1.exe raised exception class EIdReplyPOP3Error with message".

Estoy buscando ese error en particular en internet pero no encuentro nada.

Muchas gracias por tu ayuda.

Saludos,

Mariano.

jachguate 07-02-2008 19:38:15

Solo que has obviado el mensaje que envía de vuelta el servidor pop3, este estará justo después de "With message"

:D:D:D

mcalmanovici 07-02-2008 19:47:35

El mensaje es blanco
 
jachguate, te comento que el mensaje justamente es ''. O sea como que es blanco y no me dice nada.
Te copio el código tal cual lo estoy ejecutando:
Código Delphi [-]
procedure TForm1.BitBtn2Click(Sender: TObject);
var
  Msg: TIdMessage;
  Att: TIdAttachment;
  I: Integer;
begin
  IdPOP31.Host := 'server011.host';
  IdPOP31.Port := 143;
  IdPOP31.Username := 'mail@servidor.com.ar';
  IdPOP31.Password := 'mipass';
  IdPOP31.Connect;
  if IdPOP31.CheckMessages >= 1 then
  begin
    Msg := TIdMessage.Create(nil);
    try
      if IdPOP31.Retrieve(1, Msg) then
        for I := 0 to Msg.MessageParts.Count - 1 do
          if Msg.MessageParts.Items[i] is TIdAttachment then
          begin
            Att := TIdAttachment(Msg.MessageParts.Items[i]);
            Att.SaveToFile(Att.FileName);
          end;
    finally
      Msg.Free;
    end;
  end;
end;

Muchas gracias por tu tiempo.

jachguate 07-02-2008 20:32:33

Bien, pues ejecutalo paso a paso y veamos que línea es la que está produciendo el error.

Hasta luego.

;)

mcalmanovici 07-02-2008 20:42:28

El cartel de error sale en el connect.
 
Cita:

Empezado por mcalmanovici (Mensaje 264019)
Gracias por el código.
Ahora estuve probando el código que me dejaste y me tira error cuando se va a conectar (en la línea IdPOP31.Connect).
Muchas gracias por tu ayuda.

El error me lo está dando en la línea IdPOP31.Connect.
En ese momento es cuando me sale el error que te mostré anteriormente.

Muchas Gracias.

egostar 07-02-2008 20:46:26

Estas seguro de que el nombre de tu servidor de correo es

Código Delphi [-]
IdPOP31.Host := 'server011.host';

Así es como lo tienes en tu outlook?

Ademas no estas usando el puerto de POP3, estas usando el puerto de IMAP4, que no tendria mayor relevancia (creo)

Salud OS

mcalmanovici 07-02-2008 20:53:08

Ya me puedo conectar.
 
Gracias egostar... era problema que el puerto efectivamente no era de pop3. El puerto para pop3 haciendo una rápida busqueda en google es 110. El servidor en el código tengo el que debe ir no el que puse en el foro.

Vuelvo a agradecer a egostar. Y también vuelvo a agradecer a jachte por su tiempo y contestaciones.

Saludos,

Mariano.

Ahora voy a seguir haciendo más cosas con el mail... Espero que me salgan así no tengo que preguntar mucho más....

egostar 07-02-2008 20:54:53

Cita:

Empezado por mcalmanovici (Mensaje 264115)
Gracias egostar... era problema que el puerto efectivamente no era de pop3. El puerto para pop3 haciendo una rápida busqueda en google es 110. El servidor en el código tengo el que debe ir no el que puse en el foro.

Vuelvo a agradecer a egostar. Y también vuelvo a agradecer a jachte por su tiempo y contestaciones.

Saludos,

Mariano.

Ahora voy a seguir haciendo más cosas con el mail... Espero que me salgan así no tengo que preguntar mucho más....

Pues mira que bien, y pensar que dude que fuera el puerto :o

Salud OS


La franja horaria es GMT +2. Ahora son las 00:44:09.

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