![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
|||
|
|||
|
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; //
|
|
#2
|
||||
|
||||
|
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
![]() Última edición por jachguate fecha: 25-02-2004 a las 03:48:19. Razón: resaltar el código |
|
#3
|
||||
|
||||
|
Menos mal, siempre estaís ahí, para corregirme...
![]() |
|
#4
|
||||
|
||||
|
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;
Mensage.From.Address := fromAddress.Text; En la que yo asignaba el valor dado por el usuario.
__________________
Sitrico |
|
#5
|
||||
|
||||
|
Strico como se si un mail es invalido.
Yo tengo un problema parecido, no me envia el mail y no se porque, ya eh provado capturando los errores incluso lo que dice jachgate lo de capturar el error en el socket, y na de na, te paso mi codigo haber si.... Código:
procedure TForm1.Button1Click(Sender: TObject);
begin
try
IdSmtp1.Connect;
try
// Envio el mensaje.
IdSmtp1.Send(idMessage1);
finally
IdSmtp1.Disconnect;
end;
ShowMessage('Enviado Correctamente');
except
// Capturo algunas excepciones que pueden ocurrir
ON E: EIdProtocolReplyError do begin
ShowMessage('No se ha podido enviar el email.' + #13 +
'Incorrecto el email o el usuario o la password.');
end;
on E: EFOpenError do begin
ShowMessage('No se ha podido enviar el email.' + #13 +
'Fichero Adjunto desconocido o erróneo.');
end;
on E: EIdSocketError do begin
ShowMessage('No se ha podido enviar el email.'+ #13 +
'Host desconocido o incorrecto. Ha ocurrido el error en el sochet nº ' + IntToStr(e.LastError));
end
else begin
ShowMessage('Fallo en el envio de email');
Raise;
end;
end;
if IdSmtp1.Connected then IdSmtp1.Disconnect;
end;
Haber si de una vez consigo hacer funcionar este componente, gracias. |
|
#6
|
|||
|
|||
|
Hola Volare:
te falla la conexión Código:
try
IdSmtp1.Connect;//falla aquí
try
// Envio el mensaje.
IdSmtp1.Send(idMessage1);
finally
IdSmtp1.Disconnect;
end;
ShowMessage('Enviado Correctamente');
except
...
end;
Host: la dirección o el nombre de tu servidor de correo. ej tu_servidor.com User: la cuenta de usuario. ej tu_cuenta_de_correo Password: el pàssword del usuario. ej tu_password_de_correo |
|
#7
|
||||
|
||||
|
Coño Juliá T. muchas gracias, casi me habeis tenido que dar un tiron de orejas para que me diera cuenta, yo pensaba que el host era la ip, por eso nunca lo ponia, y no la direccion del smtp.
Al leer este mensaje me ha entrado vergüenza y to, de lo burrico que he sido con esto. Bueno gracias por vuestro tiempo. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|