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 24-02-2004
Ester Ester is offline
Miembro
 
Registrado: oct 2003
Posts: 13
Poder: 0
Ester Va por buen camino
smtp

Muy buenas,

estoy utilizando los componentes indy para enviar mails via smtp, concretamente utilizo el idsmtp y el idmessage tal y como leí en algunos foros. Pues bien, mi problema es el siguiente: en algunas ocasiones los mails no se envian y no se por que motivo. Cuando lo pruebo yo misma des de el codigo fuente no tengo ningun problema, pero cuando son los usuarios que ejecutan algun proceso que envia un mail automaticamente, en ocasiones este mail no se envia. Justo despues del connect he puesto un mensaje de error por si no se puede conectar, pero los usuarios me comentan que nunca les ha salido el mensaje, por lo tanto parece que conectar si que conecta. Adjunto el codigo que utilizo por si a alguien se le ocurre algo para provar:

{lleno el mensaje (msg)}
smtp.Disconnect;
smtp.AuthenticationType:=atNone;
smtp.port:=25;
smtp.Host:='mi host';
smtp.Connect();
if not smtp.Connected then
frmrutinas1.mostrar_error(9,'ACC')
else
smtp.Send(msg);
smtp.Disconnect;

Grácias,

Ester
Responder Con Cita
  #2  
Antiguo 24-02-2004
Avatar de Nuria
Nuria Nuria is offline
Miembro
 
Registrado: may 2003
Posts: 531
Poder: 22
Nuria Va por buen camino
Hola ester!

Porque no intentas capturar el error cuando vas a conectar de esta manera :

Código:
  try
     smtp.Connect();
     smtp.Send(msg);
     smtp.Disconnect;
  except
    /// Aqui capturas las excepciones, osea los errores que te da,
    por ejemplo:
    on E: EIdSocketError do begin
       Showmessage('No se ha podido enviar el email.'+ #13 +
                           'Host desconocido o incorrecto.');
    end
Espero que te sirva de ayuda.

Saludos!
Responder Con Cita
  #3  
Antiguo 25-02-2004
Julià T. Julià T. is offline
Miembro
 
Registrado: may 2003
Ubicación: en el teclado
Posts: 314
Poder: 22
Julià T. Va por buen camino
sólo una pequeña correción
Código:
  
  try
     smtp.Connect();
     smtp.Send(msg);
    // smtp.Disconnect; si se produciera un error no podrias volver a conectar
  except
    /// Aqui capturas las excepciones, osea los errores que te da,
    por ejemplo:
    on E: EIdSocketError do begin
       Showmessage('No se ha podido enviar el email.'+ #13 +
                           'Host desconocido o incorrecto.');
    end
   if smtp.connected then smtp.Disconnect; //
Responder Con Cita
  #4  
Antiguo 25-02-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Para ser exactos... si ocurre un error distinto de EIdSocketError tampoco se desconectaría... puesto que la excepción sigue saltantose el stack...

lo correcto, sería:

Código:
try
  smtp.Connect();
  try
    smtp.Send(msg);
  finally
    smtp.Disconnect; // no es necesario chequear si está conectado... pues se ejecuta
                        // solo si fue posible conectarse (y siempre que se haya conectado)
  end;
except
  // Aqui capturas las excepciones, osea los errores que te da,
  // por ejemplo:
  // capturará todas las excepciones, ocurridas durante la conexión, el envio del
  // mensaje y la desconección.
  on E: EIdSocketError do begin
     Showmessage('No se ha podido enviar el email.'+ #13 +
                         'Ha ocurrido el error de socket No. ' + IntToStr(e.LastError));
     // esto debido a que el error de sockets no puede darse solo porque 
     // el host sea desconocido o incorrecto.
     // mas info siguiendo este enlace
end
Hasta luego.


Última edición por jachguate fecha: 25-02-2004 a las 03:48:19. Razón: resaltar el código
Responder Con Cita
  #5  
Antiguo 25-02-2004
Avatar de Nuria
Nuria Nuria is offline
Miembro
 
Registrado: may 2003
Posts: 531
Poder: 22
Nuria Va por buen camino
Menos mal, siempre estaís ahí, para corregirme...
Responder Con Cita
  #6  
Antiguo 25-02-2004
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Poder: 22
sitrico Va por buen camino
Bueno, he tenido el mismo problema (el email no se envía) y no aparece el error.

Uso el código:

Código:
Try
   If not(SMTP.Connected) then
      SMTP.Connect;
   SMTP.Send(Mensage);
   SMTP.Disconnect;
   Application.MessageBox('El Registro se Completo con exito','Atención',MB_Ok);
   ModalResult := mrOk;
Except
   Application.MessageBox('El Registro no pudo ser completado','Atención',MB_Ok);
   End;
Que no anida los dos Try como en el código de jachguate (cosa que voy a arreglar) pero lo que si descubri que el error se genera cuando se una una dirección de email invalida en la propiedad :

Mensage.From.Address := fromAddress.Text;

En la que yo asignaba el valor dado por el usuario.
__________________
Sitrico
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:22:07.


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