Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-03-2004
Avatar de VolaRe
VolaRe VolaRe is offline
Miembro
 
Registrado: ago 2003
Posts: 121
Poder: 21
VolaRe Va por buen camino
Unhappy IdSmtp

Hola,
Estoy empezando a utilizar los componentes indy, estoy intentando hacer una aplicacion para enviar mails, pero no consiguo que envie na de na, conecta y despues de un rato me dice conexion cerrada graciosamente, ¿alguien me puede decir que estoy haciendo mal?.

Yo solo pongo la direccion de correo y el asunto con su correspondiente mensaje, claro, hay que indicarle alguna ip y algun usuario, de ser asi que ipe le asigno la mia o a donde quiero que llegue. Os agradeceria que me lo aclaraseis un poco, gracias.

Pongo en el formulario IdSmtp y IdMessage
Responder Con Cita
  #2  
Antiguo 18-03-2004
Avatar de Nuria
Nuria Nuria is offline
Miembro
 
Registrado: may 2003
Posts: 531
Poder: 21
Nuria Va por buen camino
Hola volare!

El Mensaje se configura de la siguiente manera:

Código:
with idMessage do begin
    // Cuerpo del mensaje.
    Body.Clear;
    Body.Add('Aqui añades el cuerpo del mensaje);
    // Cuenta Origen.
    From.Text := EMAILORIGEN;
    // Cuenta Destino.
    Recipients.EMailAddresses := EMAILDESTINO;
    // Asunto del email.
    Subject := ASUNTO;
    // Prioridad del mensaje, ALTA.
    Priority := TidMessagePriority(mpHighest);
    // Coloco el archivo adjunto el cual enviar.
    TidAttachment.Create(idMensage.MessageParts,ARCHIVOADJUNTO);
  end;
Y el idSMPT :

Código:
 with idSMPT do begin 
   // Configuro autentificación.
   AuthenticationType := atLogin;
  Username := USERNAME;  // Nombre del usuario
  Password := PASS;  // la password
  // Configuro el servidor SMTP.
  Host := HOST;
  Port := PUERTO;
   
  try
    Connect;
    try
      // Envio el mensaje.
      Send(idMenssage);
    finally
      Disconnect;
    end;
    Msg('Enviado Correctamente');
  except
     // Capturo algunas excepciones que pueden ocurrir
    ON E: EIdProtocolReplyError do begin
      Msg('No se ha podido enviar el email.' + #13 +
          'Incorrecto el email o el usuario o la password.');
    end;
    on E: EFOpenError do begin
      Msg('No se ha podido enviar el email.' + #13 +
          'Fichero Adjunto desconocido o erróneo.');
    end;
    on E: EIdSocketError do begin
      Msg('No se ha podido enviar el email.'+ #13 +
          'Host desconocido o incorrecto.');
    end
    else begin
      Msg('Fallo en el envio de email');
    end;
  end;
  if connected then Disconnect;
end
Espero que te sirva.

Salu2!
Responder Con Cita
  #3  
Antiguo 18-03-2004
Avatar de VolaRe
VolaRe VolaRe is offline
Miembro
 
Registrado: ago 2003
Posts: 121
Poder: 21
VolaRe Va por buen camino
No me reconoce los identificadores EIdProtocolReplyError y EIdSocketError, algun comentario de lo que pueda ser??. Otra cosa sabes de alguna pag. que explique estos tipos de errores y que los enumere uno a uno??.

Te paso mi codigo y me dices si ves algo mal, en host eh puesto mi ip y el puerto eh dejado el que viene por defecto el 25

Código:
procedure TForm1.Button1Click(Sender: TObject);
begin
  IdMessage1.Body.Clear;
  //el texto del mensaje
  IdMessage1.Body.Add(Memo1.Lines.Text);
  //direccion en donde quiero enviarlo
  IdMessage1.ReceiptRecipient.Address := Edit1.Text;
  //el asunto
  IdMessage1.Subject := Edit2.Text;
  IdSmtp1.Connect;
  IdSmtp1.Send(idMessage1);
  IdSmtp1.Disconnect;
end;

end.
Espero que me digais donde esta el fallo, porque yo ya lo doy por imposible, gracias

Última edición por VolaRe fecha: 19-03-2004 a las 10:31:37.
Responder Con Cita
  #4  
Antiguo 19-03-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por VolaRe
No me reconoce los identificadores EIdProtocolReplyError y EIdSocketError, algun comentario de lo que pueda ser
No te los reconoce seguramente porque están declarados en alguna unidad que no incluyes en la clásula uses.

La regla de oro para lidiar con este tipo de errores en un código que provenga de una fuente confiable- como evidentemente es el caso -es usar la opción "Find in Files..." del menú "Search" para localizar la unidad adecuada que, en este caso, resulta ser IdException.

// Saludos
Responder Con Cita
  #5  
Antiguo 19-03-2004
Avatar de VolaRe
VolaRe VolaRe is offline
Miembro
 
Registrado: ago 2003
Posts: 121
Poder: 21
VolaRe Va por buen camino
gracias roman,
despues de solucionar este pequeño error, cuando envio el mail me indica, fallo en el envio de mail, a que puede ser que no me envie el mail???.

Ahora ya sabemos que no es de host ni de pass ni de socket, es de mail, que es lo que significa esto??? pues no tengo ni idea, haber si me respondeis, os lo agradeceria.

Y a ti nuria gracias por todo el codigo puesto, sobre todo por las excepciones, que no sabia ni que existieran.
Responder Con Cita
  #6  
Antiguo 19-03-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por VolaRe
despues de solucionar este pequeño error, cuando envio el mail me indica, fallo en el envio de mail, a que puede ser que no me envie el mail???.
En el código de Nuria agrega la instrucción raise inmediatamente debajo de la línea que manda el mensaje:

Código:
else begin
  Msg('Fallo en el envio de email');
  raise;
end;
Esto es porque el try-except-end capturó la excepción pero al no ser ninguna de las previstas sólo mostró el mensaje. La instrucción raise volverá a lanzar la excepción de manera que podrás saber de qué excepción se trata y actuar de acuerdo a ello.

// Saludos
Responder Con Cita
  #7  
Antiguo 20-03-2004
Avatar de VolaRe
VolaRe VolaRe is offline
Miembro
 
Registrado: ago 2003
Posts: 121
Poder: 21
VolaRe Va por buen camino
Unhappy

nada roman, sigo estando en las mismas, desupes de poner la orden 'raise' inmediatamente despues de como tu me comentas me sale otro mensaje que es
Código:
Connection Closed Gracefully
y en este punto volvemos a estar como al principio, que me salia este mensaje sin poner las excepciones,¿a que es debido este mensaje?¿porque me cierra la conexion sin lanzarme ningun error?.

Ademas estoy haciendo una aplicacion muy simple que es poner el idsmtp y el idmessage, rellenando los campos del idmessage desde el propio componoente, porque esto ya me esta poniendo mosca, porque ya me estoy cuestionando ¿y si es el componente que no funciona?(cuando digo que no funciona el componente me refiero al idsmtp), bueno espero que me respondais pronto, gracias por dedicar parte de vuestro tiempo a este problemilla
Responder Con Cita
  #8  
Antiguo 20-03-2004
Julià T. Julià T. is offline
Miembro
 
Registrado: may 2003
Ubicación: en el teclado
Posts: 314
Poder: 21
Julià T. Va por buen camino
mirate este hilo para ver si te sirve http://www.clubdelphi.com/foros/showthread.php?t=7709
Responder Con Cita
  #9  
Antiguo 20-03-2004
Avatar de VolaRe
VolaRe VolaRe is offline
Miembro
 
Registrado: ago 2003
Posts: 121
Poder: 21
VolaRe Va por buen camino
Julia T. gracias por el hilo, pero sigue sin resolverme na, ahi un usuario en ese hilo que dice que a el no le iva por las direcciones que ponia, uqe no eran validas, peor yo uso las mias propias para autoenviarme el mail.

Le he dejado tambien un mensaje haber si me puede resolver algo, haber si tengo suerte.
Responder Con Cita
  #10  
Antiguo 14-08-2004
dgbgt dgbgt is offline
Registrado
 
Registrado: ago 2004
Posts: 3
Poder: 0
dgbgt Va por buen camino
Gracias

Muchas Gracis por sus comentarios. Es la primera vez que uso Indy para enviar correo y me funciono a la perfección.

Gracias a todos.
Responder Con Cita
  #11  
Antiguo 03-07-2005
rruffino rruffino is offline
Miembro
 
Registrado: dic 2004
Ubicación: Berrotaran, Cordoba - Argentina
Posts: 215
Poder: 20
rruffino Va por buen camino
Talking Yo si lo probe y tengo problemas

Hola amigos del foro, he seguido estos pasos y les digo que anda a la perfeccion, pero noto un problema cuando envio archivos adjuntos. Uso delphi 7 e interbase. Mi sistema es un sistema de facturacion que al generar una factura la paso a formato pdf y se la envio al cliente por correo electronico. El problema es que a medida que voy enviando los correos me va adjuntando las facturas de los demas, es decir, si el primer cliente que facturo se llama Jose, y el numero de factura es el 100, José recibe en su correo la factura número 100, pero si luego esta el cliente Pablo con la factura numero 101, pablo no solo recibe su correspondiente factura sino que recibe las que fueron enviadas antes, en este caso la que fue enviada a José. Es como si quedaran cargados los archivos adjuntados previamente. Desde ya les agradezco su ayuda y espero que se me solucione este embrollo.
Saludos a todos, Román
Responder Con Cita
  #12  
Antiguo 03-07-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Si usas el mismo IdMessage para los sucesivos correos es lógico que así suceda; supongo que de alguna manera tienes que borrar los datos anteriores. Cuando creas al "attachment" con

TidAttachment.Create(idMensage.MessageParts,ARCHIVOADJUNTO);

imagino que se agrega a idMessageParts así que posiblemente

idMessageParts.Clear

sea suficiente pero no lo he probado.

// Saludos
Responder Con Cita
  #13  
Antiguo 04-07-2005
rruffino rruffino is offline
Miembro
 
Registrado: dic 2004
Ubicación: Berrotaran, Cordoba - Argentina
Posts: 215
Poder: 20
rruffino Va por buen camino
Eureka

Tocayo (yo tambien soy Román), has dado en la tecla, lo he probado y hasta ahora anda de maravillas. Gracias por tu tiempo.
Saludos, Román.-
Responder Con Cita
  #14  
Antiguo 09-12-2005
elguille elguille is offline
Miembro
 
Registrado: ene 2005
Posts: 114
Poder: 20
elguille Va por buen camino
Resumo todo lo dicho con una funcion que funciona (comprobado)

añadir a USES

IdBaseComponent, IdComponent, IdTCPServer, IdSMTPServer,
IdMessage, IdEMailAddress, IdTCPConnection, IdTCPClient, IdMessageClient, IdSMTP,idexception

Código Delphi [-]
  procedure email2(host:string;nombre:string;password:string;port:integer;desde:string;
    hasta:string;asunto:string;cuerpo:string;adjunto:string);
  var
      IDSMTP1: TIDSMTP;  // Componente de envio de correo
      mensaje: TIdMessage;
  begin
  IDSMTP1:=TIDSMTP.Create(nil);
  IdSMTP1.AuthenticationType :=atLogin;
  IdSMTP1.UserNAME := nombre;
  IdSMTP1.Password := password;
  IdSMTP1.Host := host;
  IdSMTP1.Port := port;
  MENSAJE:=TIDMESSAGE.CREATE(nil);
  with Mensaje do
  begin
  Body.Add(CUERPO);
  From.Text := desde;
  Recipients.EMailAddresses := hasta;
  Subject := asunto;
  Priority := TIdMessagePriority(mpHighest);//prioridad del mensaje
  CCList.EMailAddresses := '';
  BccList.EMailAddresses := '';
  TIdAttachment.Create(Mensaje.MessageParts,adjunto);
  end; //configuracion server smtp
  with idsmtp1 do
  begin
   try
      Connect;
      try
        // Envio el mensaje.
        Send(Mensaje);
      finally
        Disconnect;
      end;
  //    MessageDlg('Enviado Correctamente', mtInformation, [mbOK], 0);
    except
       // Capturo algunas excepciones que pueden ocurrir
      ON E: EIdProtocolReplyError do begin
      MessageDlg('No se ha podido enviar el email.' + #13 +
            'Incorrecto el email o el usuario o la password.', mtError, [mbOK], 0);
      end;
      on E: EFOpenError do begin
      MessageDlg('No se ha podido enviar el email.' + #13 +
            'Fichero Adjunto desconocido o erróneo.', mtError, [mbOK], 0);
      end;
      on E: EIdSocketError do begin
      MessageDlg('No se ha podido enviar el email.'+ #13 +
            'Host desconocido o incorrecto.', mtError, [mbOK], 0);
      end
      else begin
      MessageDlg('Fallo en el envio de email', mtError, [mbOK], 0);
      end;
    end;
  end;
  ENd;

Última edición por dec fecha: 09-12-2005 a las 12:31:27. Razón: ¡¡Encerrad el código fuente entre las etiquetas [DELPHI] ... [/DELPHI]!!
Responder Con Cita
  #15  
Antiguo 09-12-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

elguille, no veo que liberes en la función que muestras los objetos "TIdSmtp" y "TIdMessage", y, sin embargo, en su creación no les das dueño: eres tú mismo, el dueño, por tanto, y el encargado de su liberación. En fin, es que me ha llamado la atención, nada más.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #16  
Antiguo 09-12-2005
seba_cipo seba_cipo is offline
Miembro
 
Registrado: oct 2005
Ubicación: Argentina
Posts: 35
Poder: 0
seba_cipo Va por buen camino
elguille:

me tira un error asi
socket error #10051 network is unreacheable

por q es???


cuando llamo el procedi email2 en el parametro

nombre:= mi email
desde:= mi email ???


esta bien eso??
desde ya muchas gracias!
Responder Con Cita
  #17  
Antiguo 09-12-2005
seba_cipo seba_cipo is offline
Miembro
 
Registrado: oct 2005
Ubicación: Argentina
Posts: 35
Poder: 0
seba_cipo Va por buen camino
solucionado,, muchas gracias, el problema era con el host,,
anda joya el procedure de elguille
saludos!
Responder Con Cita
  #18  
Antiguo 08-11-2006
source_code source_code is offline
Miembro
 
Registrado: ene 2005
Posts: 16
Poder: 0
source_code Va por buen camino
Joder, me muestra el adjunto con caracteres en el body, me pone un chorizo de datos.
Mirad os muestro el principio del e-mail que se recibe:

Código:
This is a multi-part message in MIME format --=_NextPart_2rfkindysadvnqw3nerasdf Content-Type: text/plain Content-Transfer-Encoding: 7bit 
 
Hola te paso un documento
 
 
--=_NextPart_2rfkindysadvnqw3nerasdf Content-Type: application/octet-stream; name="documento.doc" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="carta_concejalia.doc" 0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAACAAAA0AAAAAAAAAAA EAAA0gAAAAEAAAD+////AAAAAM4AAADPAAAA//////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////s pcEAcWAJBAAA+BK/AAAAAAAAEAAAAAAABgAAUA8AAA4AYmpianFQcVAAAAAAAAAAAAAAAAAAAAAA AAAKDBYANBgAABM6AQATOgEAUAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD
ya no se que hacer macho.
Responder Con Cita
  #19  
Antiguo 11-01-2007
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Muchas gracias por el codigo...muy bueno yo estaba usando el otro componente de NetExpress y gracias a que mi proveedor ya no acepta sesiones SMTP externas tuve que cambiarlo a Indy (que no me gustaba mucho)....Quedo super bien y resolvi en menos de 2 horas el problema..
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #20  
Antiguo 24-08-2007
faustino36 faustino36 is offline
Registrado
 
Registrado: ago 2007
Posts: 3
Poder: 0
faustino36 Va por buen camino
que tal compañeros, soy uevo en este foro y necesito ayuda para enviar mails utilizando los componentes Indy, cheque este codigo y es el que estoy probando, pero marca un error de que no encuentra el host, los parametros que le paso a la funcion son estos:

email2('www.hotmail.com','proy_siapro@hotmail.com','*****',25,'proy_siapro@hotmail.com','faustino36@ hotmail.com','Prueba','cuerpo del mail','');

y esta es la funcion:


procedure email2(host:string;nombre:string;password:string;port:integer;desde:string;
hasta:string;asunto:string;cuerpo:string;adjunto:string);
var
IDSMTP1: TIDSMTP; // Componente de envio de correo
mensaje: TIdMessage;
begin
IDSMTP1:=TIDSMTP.Create(nil);
IdSMTP1.AuthenticationType :=atLogin;
IdSMTP1.UserNAME := nombre;
IdSMTP1.Password := password;
IdSMTP1.Host := host;
IdSMTP1.Port := port;
MENSAJE:=TIDMESSAGE.CREATE(nil);
with Mensaje do
begin
Body.Add(CUERPO);
From.Text := desde;
Recipients.EMailAddresses := hasta;
Subject := asunto;
Priority := TIdMessagePriority(mpHighest);//prioridad del mensaje
CCList.EMailAddresses := '';
BccList.EMailAddresses := '';
TIdAttachment.Create(Mensaje.MessageParts,adjunto);
end; //configuracion server smtp
with idsmtp1 do
begin
try
Connect;
try
// Envio el mensaje.
Send(Mensaje);
finally
Disconnect;
end;
// MessageDlg('Enviado Correctamente', mtInformation, [mbOK], 0);
except
// Capturo algunas excepciones que pueden ocurrir
ON E: EIdProtocolReplyError do begin
MessageDlg('No se ha podido enviar el email.' + #13 +
'Incorrecto el email o el usuario o la password.', mtError, [mbOK], 0);
end;
on E: EFOpenError do begin
MessageDlg('No se ha podido enviar el email.' + #13 +
'Fichero Adjunto desconocido o erróneo.', mtError, [mbOK], 0);
end;
on E: EIdSocketError do begin
MessageDlg('No se ha podido enviar el email.'+ #13 +
'Host desconocido o incorrecto.', mtError, [mbOK], 0);
end
else begin
MessageDlg('Fallo en el envio de email', mtError, [mbOK], 0);
end;
end;
end;
END;

los valores que paso a la funcion son correctos?? o cual es el error???
se agradece su ayuda!!
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


La franja horaria es GMT +2. Ahora son las 06:14:42.


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