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 29-06-2012
Avatar de kapcomx
kapcomx kapcomx is offline
Miembro
 
Registrado: jun 2007
Ubicación: Puebla México
Posts: 350
Poder: 17
kapcomx Va por buen camino
como capturar una excepcion al enviar mail smtp indy gmail

Que tal Compañeros, Un saludo a todos los que forman parte de este gran Foro, Pues nuevamente acudo a ustedes con un problema, pues resulta que donde trabajo tenia un programa que enviaba archivos de pedido a los clientes usaba idsmtp y idmessage y funcionaba todo muy bien lo tenia configurado para que se enviara de un servidor muy especifico de la empresa, pero me pidieron que lo cmabiara para que se pudiera enviar desde cualquier cuenta de gmail.

buscando en el Foro encontre un excelente ejemplo de el compañero Roman, el cual me funciona muy bien, el único detalle que tengo es que si al momento de enviar el correo me pide una contraseña, si la escribo correctamente no hay problema, pero si es erronea me salta un mensaje de error (el cual si estuviera en español seria perfecto).

project my_proyecto raised exception class EidSMTPReply error with message 'Username and password not accepted' . learn more at

y me da una liga de ayuda de gmail.

me gustaria saber como cachar esa excepcion para en lugar de ese mensaje pudiera poner uno propio.
lo he intentado asi pero no me funciona como quiero por que primero sale el mensaje mencionado y luego el mio.

Código Delphi [-]
procedure Tfrmenviaproveedor2.btnEnviarCorreoClick(Sender: TObject); 
var 
  Password: String; 
  filename: String; 
begin 
  filename:= ed_archivo.Text; 
  idMessage.Clear; 
  idMessage.FromList.EMailAddresses := 'lacuentadegmail@gmail.com'; 
  idMessage.Recipients.EMailAddresses := ed_mail.Text; 
  idMessage.Subject := 'Confirmar Existencias'; 
  idMessage.AttachmentTempDirectory := filename; 
  TIdAttachmentfile.create(idMessage.MessageParts,filename); 
  mmobserva.Lines.Add('Mensaje de Correo enviado desde Sistema Informatico XXXXXXX.'); 
  idMessage.Body.AddStrings(mmobserva.Lines); 
  if InputQuery('Comercializadora XXXXXX', 'Contraseña del servidor', Password) then 
  begin 
    idSMTP.Username := 'lacuentadegmail@gmail.com'; 
    idSMTP.Password := Password; 
    btnEnviarCorreo.Enabled := false; 
    try 
      if not idSMTP.Connected then 
        idSMTP.Connect; 
      idSMTP.Send(IdMessage); 
    except 
      showmessage('Ocurrio un error al Intentar enviar el Correo, Verifique el password indicado'); 
      rebote:=true; 
      btnEnviarCorreo.Enabled := true; 
    end;
  end; 
end;

De antemano les agradezco a quienes puedan ayudarme

Saludos...
__________________
un tipo al cual la sociedad no le tiene el mas mínimo respeto no puede ser presidente....

Última edición por Casimiro Notevi fecha: 29-06-2012 a las 00:09:06.
Responder Con Cita
  #2  
Antiguo 29-06-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por kapcomx Ver Mensaje
lo he intentado asi pero no me funciona como quiero por que primero sale el mensaje mencionado y luego el mio.
Eso será si lo ejecutas desde delphi, porque si lo haces desde fuera entonces sólo saldrá tu mensaje
Responder Con Cita
  #3  
Antiguo 29-06-2012
Avatar de kapcomx
kapcomx kapcomx is offline
Miembro
 
Registrado: jun 2007
Ubicación: Puebla México
Posts: 350
Poder: 17
kapcomx Va por buen camino
Genio

Mi buen Casimiro, eres un Genio...
Ya me habia pasado algo así una vez. jejejejeje que cosas....
a veces haces lo más dificil y te atoras en lo mas facil....

Saludos...

P.D. Para la proxima prometo agotar esa posibilidad antes de preguntar jejejeje....
__________________
un tipo al cual la sociedad no le tiene el mas mínimo respeto no puede ser presidente....
Responder Con Cita
  #4  
Antiguo 29-06-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por kapcomx Ver Mensaje
Mi buen Casimiro, eres un Genio...
Qué más quisiera yo, me pediría 3 deseos
Responder Con Cita
  #5  
Antiguo 04-08-2013
Avatar de martini002
martini002 martini002 is offline
Miembro
 
Registrado: may 2012
Ubicación: Puerto Ordaz - Venezuela
Posts: 175
Poder: 12
martini002 Va por buen camino
Hola muchachos, vine a revivir este fantasma, esto mismo me pasa a mi,
y eso mismo que el amigo kapcomx queria hacer tambien me gustaria hacerlo,
capturar la excepcion y en vez que salga ese error en ingles, aparezca algo que yo coloque

ejemplo mi codigo de envio:

Código Delphi [-]
procedure TPantallaPrincipal.EnviarMensaje(host:string;nombre:string;password:string;port:integer;desde:string  ;hasta:string;asunto:string;cuerpo:string;adjunto:string);
Var
  Adjuntar:TIdAttachmentFile;
begin
  Adjuntar:= nil;
  IdMessage1.Clear;
  idMessage1.FromList.EMailAddresses := Desde;
  idMessage1.Recipients.EMailAddresses := Hasta;
    idMessage1.Subject := Asunto;
  idMessage1.Body.Add(Cuerpo);
     idSMTP1.Username := Nombre;
  idSMTP1.Password := Password;
  if Adjunto <> '' then
    begin
      if FileExists(Adjunto) then
        Adjuntar:=TIdAttachmentFile.Create(idMessage1.MessageParts, Adjunto);
        Adjuntar.DisplayName := Adjunto;
        Adjuntar.FileName := Adjunto;
    end;
  if idSMTP1.Connected then
    begin
      idSMTP1.Disconnect;
      idSMTP1.Connect;
    end
  else
    begin
      idSMTP1.Connect;
    end;

  try
    idSMTP1.Send(IdMessage1);
    ShowMessage('Mensaje enviado exitosamente!');
  except
    ShowMessage('Error al enviar mensaje!');//Esto nunca se muestra
  end;

  if Assigned(Adjuntar) then
    begin
      Adjuntar.Free;
      Adjuntar:= nil;
    end;
ENd;


Mas especificamente aqui:

Código Delphi [-]
  try
    idSMTP1.Send(IdMessage1);
    ShowMessage('Mensaje enviado exitosamente!');
  except
    ShowMessage('Error al enviar mensaje!');//Esto nunca se muestra cuando salta la excepcion de timeout por ejemplo
  end;

que creen que pueda ser?
Saludos
__________________
El Conocimiento se puede compartir, pero la Experiencia es totalmente Intransferible.
Responder Con Cita
  #6  
Antiguo 04-08-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hola martini002, este tema no tiene nada que ver con el tratado en este hilo.
De todas formas, no has explicado realmente el problema que tienes

O sea, cuando envía el email te sale el mensaje "mensaje enviado exitosamente" y cuando salte una exception saldrá "error al enviar el mensaje".

El problema es que tienes que tratarlo de otra forma, idSMTP1.Send(idmessage1) debe devolver un valor que indica si ha sido enviado el mensaje o si ha habido algún error. Es ese valor el que debes tratar.
Ya que tal y como lo tienes ahora mismo, el mensaje se envía (mejor dicho, se ejecuta idsmtp.send sin error) y nunca saltará la exception. Incluso aunque no se haya podido enviar el mensaje.

Última edición por Casimiro Notevi fecha: 04-08-2013 a las 10:34:19.
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
Enviar Email con Indy 10 y GMail ssl camino Internet 7 01-10-2012 21:58:25
Enviar mensaje desde gmail con Indy 10 axelafonso Internet 3 13-01-2012 18:11:39
Enviar correo con SMTP de GMAIL via INDY 10 (idSMTP) lpedrazzi Internet 4 31-12-2006 22:30:26
Enviar mail usando SMTP pero no OUTLOOK brandolin Internet 2 31-01-2006 03:32:30
Enviar mail con Gmail Sotrono Internet 2 17-04-2005 21:19:05


La franja horaria es GMT +2. Ahora son las 18:38:15.


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