Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Sobre error para enviar email por gmail (https://www.clubdelphi.com/foros/showthread.php?t=64221)

lduron 23-03-2009 05:43:32

Sobre error para enviar email por gmail
 
Hola Amigos!

Tengo el siguiente código:

procedure TForm1.Button1Click(Sender: TObject);
begin
IdMessage1.Clear;
IdMessage1.From.Address:='x@gmail.com';
IdMessage1.Subject:='Hola';
IdMessage1.Body.Text:='Hola como te va?';
IdMessage1.Priority:=TIdMessagePriority(mpNormal);
IdSMTP1.Port:=587;
IdSMTP1.Host:='smtp.gmail.com';
IdSMTP1.UseTLS:=utUseRequireTLS;
IdSMTP1.Username:='x';
IdSMTP1.Password:='x...';
IdSMTP1.Connect;
IdSMTP1.Send(IdMessage1);
IdSMTP1.Disconnect;
end;

Y me manda el siguiente error:

Project:Project1.exe raised exception class EIdTLSClientSSLIOHandlerRequred with message 'SSLIOHandler is required for this setting'

A que se refiere con esto?

Muchas gracias por la atención que tiene para leer este mensaje.

roman 23-03-2009 16:33:39

Para enviar correo por GMail necesitas usar el protocolo SSL. Aquí tienes un ejemplo.

// Saludos

Caro 23-03-2009 16:37:43

Cita:

Empezado por lduron (Mensaje 342357)
Y me manda el siguiente error:

Project:Project1.exe raised exception class EIdTLSClientSSLIOHandlerRequred with message 'SSLIOHandler is required for this setting'

A que se refiere con esto?

Hola, ¿tienes instalado la biblioteca OpenSSL?, el instalador lo puedes bajar de aquí http://www.slproweb.com/products/Win32OpenSSL.html, o las Dll de donde te ha indicacado Román.

Saluditos

lduron 23-03-2009 17:43:41

Hola Caro y Roman!

Voy a hacer algunas pruebas bajando los SSL de donde me dijo Caro y voy a probar el ejemplo que me pasaste Roman.

Muchas gracias a ambos y les digo màs adelante el resultado de las pruebas que hice.

Saludos!

lduron 24-03-2009 04:40:21

Hola amigos del foro!

Hola Caro y Roman!

Ya instale los SSL y para asegurarme aparte de instalarlo, dentro del proyecto coloque los archivos:

libeay32.dll
libssl32.dll
ssleay32.dll

Además me marcaba otro error, el cual yo intuí y se lo quite haciendo lo siguiente:

En la propiedad IOHandler del IdSMTP le puse IdSSLIOHandlerSocketOpenSSL1

Y con esto ya no me marco ningún error al compilarlo, pero al momento de ejecutarlo...se queda sin hacer nada y con el mensaje: Resolving Hostname

Me pueden hacer el favor de decirme a que se debe esto? y como lo puedo corregir?

Muchas Gracias!

Saludos!

P.D. Todo lo he hecho con código (tiempo de ejecución), solo lo que les puse arriba lo he hecho en tiempo de diseño.

lduron 24-03-2009 04:46:10

Perdón se me olvidaba que lo anterior lo hace con el puerto=465 y cuando le pongo el puerto=587 me marca:

raised exception class EIdOSSLCouldNotLoadSSLLibrary with message 'Could not load SSL library'

Saludos!

Caro 24-03-2009 13:59:26

Cita:

Empezado por lduron (Mensaje 342467)
Ya instale los SSL y para asegurarme aparte de instalarlo, dentro del proyecto coloque los archivos:

libeay32.dll
libssl32.dll
ssleay32.dll

Hola de nuevo, si instalaste, no es necesario que pongas en el proyecto ya que al instalarlo ya te lo pone en las variables de entorno.

Cita:

Empezado por lduron (Mensaje 342467)
Además me marcaba otro error, el cual yo intuí y se lo quite haciendo lo siguiente:

En la propiedad IOHandler del IdSMTP le puse IdSSLIOHandlerSocketOpenSSL1

Y con esto ya no me marco ningún error al compilarlo, pero al momento de ejecutarlo...se queda sin hacer nada y con el mensaje: Resolving Hostname

P.D. Todo lo he hecho con código (tiempo de ejecución), solo lo que les puse arriba lo he hecho en tiempo de diseño.

Si, tu IdSMTP tiena que estar enlazado a tu IdSSLIOHandlerSocketOpenSSL, ¿has ejecutado el programa de Roman tal cual esta, porque debería funcionarte? si tu te has creado otro proyecto donde estas haciendo tus pruebas, puedes subirlo aquí para que veamos en que te estas equivocando.

Cita:

Empezado por lduron (Mensaje 342469)
Perdón se me olvidaba que lo anterior lo hace con el puerto=465 y cuando le pongo el puerto=587 me marca:

raised exception class EIdOSSLCouldNotLoadSSLLibrary with message 'Could not load SSL library'

Debería funcionarte tanto con el puerto 465 y 587 teniendo la propiedad UseTLS a utUseImplicitTLS y si utilizas el puerto 25 utUseExplicitTLS, para mi que debes quitar las dll que has puesto en el proyecto, como te dije ya te lo pone en las variables de entorno al instalarlo.

Saluditos

DarkBlue 22-11-2011 04:37:56

para aquellos que tienen el problema de las dll (en especifico este mensaje raised exception class EIdOSSLCouldNotLoadSSLLibrary with message 'Could not load SSL library') y que no carga el protocolo sll agregen esto , yo solucione asi mi problema
porcierto uso el indy vercion 10.0.52
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject); 
begin   
       IdSSLOpenSSLHeaders.Load; 
end;
Luego añade IdSSLOpenSSLHeaders al uses.

vean este link http://www.clubdelphi.com/foros/showthread.php?t=65422

Enan0 23-11-2011 00:19:31

Te Recomiendo que las DLL las pongas en la carpeta del ejecutable.

y no es necesario que utilices el
Código Delphi [-]
IdSSLOpenSSLHeaders.Load;

Si esta creado y asignaste el tipo de conexion a utilizar alcanza
una vez que lo create
Código Delphi [-]
IdSSLIOHandlerSocketOpenSSL:=TIdSSLIOHandlerSocketOpenSSL.create(nil);
IdSSLIOHandlerSocketOpenSSL.SSLOptions.Method:=sslvTLSv1;
IDsmtp.IOHandler:=ssl;
IDsmtp.UseTLS:=utUseImplicitTLS;

Con esto bastaria


La franja horaria es GMT +2. Ahora son las 02:42:24.

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