Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-11-2012
y_a_p y_a_p is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 37
Poder: 0
y_a_p Va por buen camino
Envío de mail con un archivo adjunto.

Hola a todos, la verdad necesito ayuda urgente!, tengo un programa para un pediatra, en Delphi 7, Firebird, SQL Manager, necesito que envie archivos por mail, el tema es que estuve leyendo y no se por donde arrancar... no se que componente debo usar y como usarlo... agradecería por favor su ayuda urgente, gracias
Responder Con Cita
  #2  
Antiguo 03-11-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola y_a_p.

Mira en estos enlaces:
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 03-11-2012 a las 22:38:49.
Responder Con Cita
  #3  
Antiguo 03-11-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues además de leer nuestra guía de estilo , también puedes ver los enlaces que hay al final de esta misma página.
También puedes hacer una búsqueda, es un tema que se ha tratado muchísimas veces.
Responder Con Cita
  #4  
Antiguo 03-11-2012
y_a_p y_a_p is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 37
Poder: 0
y_a_p Va por buen camino
Disculpen, pero justamente pregunto porque no entiendo nada y el código que me pasas no se donde va, si tengo que crear un formulario. Es la primera vez que programamos esto..
Responder Con Cita
  #5  
Antiguo 03-11-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola y_a_p.

Realmente no es complejo y en el primer enlace está claramente explicado, pero voy a darle funcionalidad por si te sirviera de guía.
  • Dentro del editor de Delphi: File->New->Application.
  • Pone un TButton (pestaña Standard)
  • Inmediatamente debajo de implementation, agrega: uses IdSMTP, IdMessage;
  • Copia la función EnviarMensaje y pegala debajo.
  • Hace doble click sobre el botón que previamente pusiste y agrega la llamada.

El código debería quedarte así:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
  public
  end;

var
  Form1: TForm1;

implementation {$R *.dfm}

uses
  IdSMTP, IdMessage;

procedure EnviarMensaje( sUsuario, sClave, sHost, sAdjunto, sAsunto, sDestino, sMensaje: String );
var 
  SMTP: TIdSMTP;
   Mensaje: TIdMessage;
   Adjunto: TIdAttachment;
begin
  SMTP := TIdSMTP.Create( nil );
  SMTP.Username := sUsuario;
  SMTP.Password := sClave;
  SMTP.Host := sHost;
  SMTP.Port := 25;
  SMTP.AuthenticationType := atLogin;

  Mensaje := TIdMessage.Create( nil );
  Mensaje.Clear;
  Mensaje.From.Name := sDestino;
  Mensaje.From.Address := sDestino;
  Mensaje.Subject := sAsunto;
  Mensaje.Body.Text := sMensaje;
  Mensaje.Recipients.Add;
  Mensaje.Recipients.Items[0].Address := sDestino;

  if sAdjunto <> '' then
  begin
    if FileExists( sAdjunto ) then
      Adjunto := TIdAttachment.Create( Mensaje.MessageParts, sAdjunto );
  end
  else
    Adjunto := nil;

  try
    SMTP.Connect;
  except
    raise Exception.Create( 'Error al conectar con el servidor.' );
  end;

  if SMTP.Connected then
  begin
    try
      SMTP.Send( Mensaje );
    except
      raise Exception.Create( 'Error al enviar el mensaje.' );
    end;

    try
      SMTP.Disconnect;
    except
      raise Exception.Create( 'Error al desconectar del servidor.' );
    end;
  end;

  if Adjunto <> nil then
    FreeAndNil( Adjunto );

  FreeAndNil( Mensaje );
  FreeAndNil( SMTP );

  Application.MessageBox( 'Mensaje enviado correctamente.',
    'Fin de proceso',MB_ICONINFORMATION );
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  EnviarMensaje( 'juanito33', 'djeuE21', 'smtp.terra.es',
             'c:\documento.zip', 'Te envio mi documento',
             'felipe8843@terra.es', 'Adjunto archivo: documento.zip' );
end;

end.
Lógicamente tendrás que cambiar los argumentos enviados a la función EnviarMensaje para que el código sea operativo.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 25-04-2013
angel.sosa angel.sosa is offline
Miembro
NULL
 
Registrado: oct 2012
Posts: 22
Poder: 0
angel.sosa Va por buen camino
hola, yo igual estoy intentando utilizar Indy para enviar mensajes con adjunto, utilizo delphi 7 y veo dentro de sus paquetes que tengo Indy10 dentro de los paquetes, al intentar utilizar el código que sugieren me marca esto, algo similar a los demás ejemplos, incluso los que descargue el el FTP.

Código Delphi [-]
procedure EnviarMensaje( sUsuario, sClave, sHost, sAdjunto, sAsunto, sDestino, sMensaje: String );
var SMTP: TIdSMTP;
   Mensaje: TIdMessage;
   Adjunto: TIdAttachment;
   HS     : TIdSSLIOHandlerSocket ;                 //<<<<<<<<<<<<<<<<<<<<
begin

  HS := TIdSSLIOHandlerSocket.Create( nil );        //<<<<<<<<<<<<<<<<<<<<

el error que me marca es este

Código Delphi [-]
[DCC Error] Unit1.pas(34): E2003 Undeclared identifier: 'TIdAttachment'
Responder Con Cita
  #7  
Antiguo 25-04-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por angel.sosa Ver Mensaje
el error que me marca es este
Código Delphi [-]
[DCC Error] Unit1.pas(34): E2003 Undeclared identifier: 'TIdAttachment'
Hola Angel.

Si revisas con atención el mensaje #5, verás que en la cláusula uses incluyo a:
Código Delphi [-]
...
implementation

uses
  IdSMTP, IdMessage;
...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 25-04-2013
angel.sosa angel.sosa is offline
Miembro
NULL
 
Registrado: oct 2012
Posts: 22
Poder: 0
angel.sosa Va por buen camino
ahora me aparece otra cosa, como que no esta declarado o algo pero no encuentro donde se declara en el codigo que mandas

Código Delphi [-]
procedure EnviarMensaje( sUsuario, sClave, sHost, sAdjunto, sAsunto, sDestino, sMensaje: String );
var
   SMTP: TIdSMTP;
   Mensaje: TIdMessage;
   Adjunto: TIdAttachment;

begin
  SMTP := TIdSMTP.Create( nil );
  SMTP.Username := sUsuario;
  SMTP.Password := sClave;
  SMTP.Host := sHost;
  SMTP.Port := 25;
  SMTP.AuthenticationType := atLogin;

  Mensaje := TIdMessage.Create( nil );


el mensaje que me marca es este
Código Delphi [-]
[DCC Error] estadoemail.pas(45): E2003 Undeclared identifier: 'AuthenticationType'
Responder Con Cita
  #9  
Antiguo 25-04-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Angel.

Realmente no sé que te puede estar sucediendo, creo que va a resultarte mas entendible adjuntar el mismo código del ejemplo del mensaje (ya implementado) el cuál me compila sin ningún error.

No olvides tomar en cuenta lo que mencioné en el mensaje:
Cita:
Empezado por ecfisa Ver Mensaje
Lógicamente tendrás que cambiar los argumentos enviados a la función EnviarMensaje para que el código sea operativo.
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 21-10-2013 a las 11:08:01.
Responder Con Cita
  #10  
Antiguo 25-04-2013
angel.sosa angel.sosa is offline
Miembro
NULL
 
Registrado: oct 2012
Posts: 22
Poder: 0
angel.sosa Va por buen camino
no vas a creerlo, acabo de descomprimir el archivo que me envias, los adecue con los datos de mi correo y me marca de nuevo esto:

Código Delphi [-]
[DCC Error] Unit1.pas(29): E2003 Undeclared identifier: 'TIdAttachment'
Responder Con Cita
  #11  
Antiguo 26-04-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por angel.sosa Ver Mensaje
no vas a creerlo, acabo de descomprimir el archivo que me envias, los adecue con los datos de mi correo y me marca de nuevo esto:

Código Delphi [-]
[DCC Error] Unit1.pas(29): E2003 Undeclared identifier: 'TIdAttachment'
Sin dudas que te creo, aunque me llama la atención que te de el error en esa línea siendo que está declarada con anterioridad al uso de AuthenticationType (el error previo) ...

¿ Será la versión de Indy ?
En mi caso es la: 9.00.10, podes verificar la tuya agregando un componente TIdHTTP y la siguiente línea:
Código Delphi [-]
    ShowMessage(idHTTP1.Version);
Si es una versión diferente tal vez tengas que buscar por el número de versión y los términos que te dan error (AuthenticationType, TIdAttachment, etc).

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #12  
Antiguo 26-04-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
y_a_p,

Cita:
Empezado por y_a_p
...tengo un programa para un pediatra...necesito que envie archivos por mail...
Cita:
Empezado por y_a_p
...utilizo delphi 7 y veo dentro de sus paquetes que tengo Indy10...
Cita:
Empezado por y_a_p
...acabo de descomprimir el archivo que me envias...me marca de nuevo esto...Undeclared identifier: 'TIdAttachment'...
Cita:
Empezado por ecfisa
¿ Será la versión de Indy ?
Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
  public
  end;

var
  Form1: TForm1;

implementation {$R *.dfm}

uses
  IdSMTP, IdMessage, IdAttachmentFile;

procedure EnviarMensaje( sUsuario, sClave, sHost, sAdjunto, sAsunto, sDestino, sMensaje: String );
var
  SMTP: TIdSMTP;
  Mensaje: TIdMessage;
  Adjunto: TIdAttachmentFile;
  
begin
  SMTP := TIdSMTP.Create( nil );
  SMTP.Username := sUsuario;
  SMTP.Password := sClave;
  SMTP.Host := sHost;
  SMTP.Port := 25;
  SMTP.AuthType := atDefault;

  Mensaje := TIdMessage.Create( nil );
  Mensaje.Clear;
  Mensaje.From.Name := sDestino;
  Mensaje.From.Address := sDestino;
  Mensaje.Subject := sAsunto;
  Mensaje.Body.Text := sMensaje;
  Mensaje.Recipients.Add;
  Mensaje.Recipients.Items[0].Address := sDestino;

  if sAdjunto <> '' then
  begin
    if FileExists( sAdjunto ) then
      Adjunto := TIdAttachmentFile.Create( Mensaje.MessageParts, sAdjunto );
  end
  else
    Adjunto := nil;

  try
    SMTP.Connect;
  except
    raise Exception.Create( 'Error al conectar con el servidor.' );
  end;

  if SMTP.Connected then
  begin
    try
      SMTP.Send( Mensaje );
    except
      raise Exception.Create( 'Error al enviar el mensaje.' );
    end;

    try
      SMTP.Disconnect;
    except
      raise Exception.Create( 'Error al desconectar del servidor.' );
    end;
  end;

  if Adjunto <> nil then
    FreeAndNil( Adjunto );

  FreeAndNil( Mensaje );
  FreeAndNil( SMTP );

  Application.MessageBox( 'Mensaje enviado correctamente.',
    'Fin de proceso',MB_ICONINFORMATION );
end;

end.
El código del Msg #5 y #9 compila y funciona correctamente en Delphi 7 con Indy 9, en Indy 10 hay ligeros cambios como se señalan en el código anterior (Resaltados en color rojo) el cual fue probado en Delphi 2006 con Indy 10 y funciono correctamente según lo esperado con valores reales.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 26-04-2013 a las 01:14:42.
Responder Con Cita
  #13  
Antiguo 27-04-2013
y_a_p y_a_p is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 37
Poder: 0
y_a_p Va por buen camino
Hola!, agradezco tu respuesta, lo voy a comparar con el código que he hecho, luego te cuento como me fue...
Responder Con Cita
  #14  
Antiguo 02-05-2013
angel.sosa angel.sosa is offline
Miembro
NULL
 
Registrado: oct 2012
Posts: 22
Poder: 0
angel.sosa Va por buen camino
ya quedo, yo igual tenia Delphi 2007 e indy10, solo q el mensaje no me llega cuando se lo envio a correos gmail.com y a hotmail.com y no les llegan.
Responder Con Cita
  #15  
Antiguo 02-05-2013
angel.sosa angel.sosa is offline
Miembro
NULL
 
Registrado: oct 2012
Posts: 22
Poder: 0
angel.sosa Va por buen camino
muchas a gracias a todos por la valiosa ayuda, e pasado varios dias revisando las respuestas y ninguna se acomodaba a mi codigo, hasta que aparecio lo de la version y solucione mi problema. solo resta un detalle que es poder enviar a gmail y hotmail

Cita:
Empezado por angel.sosa Ver Mensaje
ya quedo, yo igual tenia Delphi 2007 e indy10, solo q el mensaje no me llega cuando se lo envio a correos gmail.com y a hotmail.com y no les llegan.
Responder Con Cita
  #16  
Antiguo 02-05-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
angel.sosa,

Cita:
Empezado por angel.sosa
...solo resta un detalle que es poder enviar a gmail y hotmail...
Revisa el Msg # 4 de este link: http://www.clubdelphi.com/foros/show...light=SendMail

Espero sea útil

Nelson.
Responder Con Cita
  #17  
Antiguo 08-06-2013
y_a_p y_a_p is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 37
Poder: 0
y_a_p Va por buen camino
Bunas tardes, disculpen volver con este tema... eh buscado y no encuentro lo que necesito... A la hora de crear el mensaje para ser enviado, el ejemplo que dieron es este.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  EnviarMensaje( 'juanito33', 'djeuE21', 'smtp.terra.es',
             'c:\documento.zip', 'Te envio mi documento',
             'felipe8843@terra.es', 'Adjunto archivo: documento.zip' );
end;

Yo lo que necesito es que en lugar de poner en codigo el destinatario, necesito sacarlo de la base de datos, porque no siempre se le va a enviar un email a una sola persona, todos tienen emails distintos..

espero su respuesta, muchas gracias
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error en envío de mail con adjunto + Indy 10 agustibaldo Internet 8 23-01-2015 21:23:31
mail con ShellExecute y archivo adjunto MarioATamborini Internet 4 28-06-2007 00:39:20
Error al enviar mail con archivo adjunto cbothamley Internet 0 08-12-2006 04:56:45
Enviar adjunto por mail joel20 JAVA 3 10-07-2006 13:09:38
bajar adjunto de un mail zastilla Internet 0 22-06-2005 14:50:49


La franja horaria es GMT +2. Ahora son las 13:41:38.


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
Copyright 1996-2007 Club Delphi