![]() |
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 |
Hola volare!
El Mensaje se configura de la siguiente manera: Código:
with idMessage do begin Código:
with idSMPT do begin Salu2! |
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); |
Cita:
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 |
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. |
Cita:
Código:
else begin // Saludos |
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 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 |
mirate este hilo para ver si te sirve http://www.clubdelphi.com/foros/showthread.php?t=7709
|
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. |
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.:p |
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;) |
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 |
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.-:) |
Resumo todo lo dicho con una funcion que funciona:p (comprobado)
añadir a USES IdBaseComponent, IdComponent, IdTCPServer, IdSMTPServer, IdMessage, IdEMailAddress, IdTCPConnection, IdTCPClient, IdMessageClient, IdSMTP,idexception
|
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. ;) |
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! |
solucionado,, muchas gracias, el problema era con el host,,
anda joya el procedure de elguille saludos! |
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 |
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..
|
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!!:) |
La franja horaria es GMT +2. Ahora son las 10:05:29. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi