Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Enviar Correo a través de IdSmtp con Gmail desde Windows Server 2008!! (https://www.clubdelphi.com/foros/showthread.php?t=80938)

Allien 26-09-2012 20:55:43

Enviar Correo a través de IdSmtp con Gmail desde Windows Server 2008!!
 
Hola que tal a todos los foristas.

Antes que nada agradezco el tiempo que se toman en leer este mensaje.

Expongo la situación.


He creado una aplicación para enviar correos desde una cuenta de Gmail a través de los componentes de INDY. IdSmtp, IdMessage y IdSSLIOHandlerSocketOpenSSL.

Como seguramente muchos sabrán Gmail utiliza encriptación a través de SSL, por ello es necesario tener las librerias de OpenSSL "libeay32.dll", "libSSL32.dll" y "ssleay32.dll" motivo por el cual descargue las librerías y las he colocado en el directorio de la aplicación.

La aplicación funciona adecuadamente desde mi máquina donde eh desarrollado la aplicación.

Finalmente necesito que esta aplicación se ejecute desde un servidor el cual tiene Windows Server 2008.

Pero eh aquí el problema, cuando intento enviar un correo desde el servidor, al momento de internar mandar el mensaje, parece que no se hace adecuadamente el HandShake, hasta el momento no eh comprobado mi teoría.

Obviamente eh copiado las librerías de OpenSSL en el Servidor, eh comprobado que se tenga salida a Internet, que el Firewall no bloquee la aplicación, etc.

La aplicación se queda inhibida, y consume enormes recursos de procesamiento.

Les dejo aquí el código de la aplicación que repito, funciona pero sólo en el equipo donde se desarrollo.



//_______________________________________________________________________
Componentes


object smtp: TIdSMTP
IOHandler = IdSSLIOHandlerSocketOpenSSL1
AuthType = atSASL
SASLMechanisms = <>
Left = 112
Top = 400
end
object IdMessage1: TIdMessage
AttachmentEncoding = 'UUE'
BccList = <>
CCList = <>
ContentType = 'text/html'
Encoding = meDefault
FromList = <
item
end>
Recipients = <>
ReplyTo = <>
ConvertPreamble = True
Left = 176
Top = 400
end
object IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL
Destination = ':25'
MaxLineAction = maException
Port = 25
DefaultPort = 0
SSLOptions.Method = sslvSSLv3
SSLOptions.Mode = sslmClient
SSLOptions.VerifyMode = []
SSLOptions.VerifyDepth = 0
Left = 144
Top = 400
end


procedure TForm2.Button1Click(Sender: TObject);
var
mail : TIDMessage;

begin

IdSSLOpenSSLHeaders.Load;

with smtp do begin
IoHandler:=IdSSLIOHandlerSocketOpenSSL1;
AuthType := atDefault;
Host := 'smtp.gmail.com';
port := StrtoInt(txtPort.text); //<-587
useTLS:=utUseRequireTLS;
Username := 'usuario';
Password := 'contraseña;
end;
mail := TIdMessage.Create(Self);
// CONFIGURACION DEL MENSAJE A ENVIAR
with mail do begin
From.Address := 'dirección@origen.com';
Recipients.EMailAddresses := txtDestino.text;
Subject := txtMensaje.text;
body.Text := txtMensaje.text;
end;
try
// CONEXION CON EL SERVIDOR DE CORREO
begin
memo1.Lines.add('conectando con el servidor');
smtp.Connect;
memo1.Lines.add('conectado');
try
// ENVIO DEL MENSAJE
begin
memo1.Lines.add('enviando mensaje');
smtp.Send(mail);
end;

except
on E: Exception do
begin
memo1.Lines.add('Fallo al enviar: ' + E.Message+ ' Tiempo Tomando '+labTiempo.caption);
end;
end;

memo1.Lines.add('Mensaje enviado satisfactoriamente'+ ' Tiempo Tomando '+labTiempo.caption);
end;

except on e:exception do
begin

memo1.Lines.add('Fallo al enviar: ' + E.Message+ ' Tiempo Tomando '+labTiempo.caption);

end;
end;
mail.Free;

end;

//_______________________________________________________________________

Saludos...

Enan0 29-09-2012 13:54:56

Lo unico que se me ocurre es. Utilazte bien las DLL (si son para 32 o para 64 bits?)

proque a mi me ha dado problemas entre las diferentes versiones

Casimiro Notevi 29-09-2012 16:33:42

Cita:

Empezado por Allien (Mensaje 445484)
.

Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración :)

Recuerda poner los tags al código fuente, ejemplo:



Gracias :)

Allien 01-10-2012 22:13:45

Si ya verifique que las librerías son para 32 Bits.
Pero aun así sigue con el mismo problema.

Gracias por tu aporte.

Anonymus2009 06-12-2012 19:39:44

Enviar Gmail desde W2008 con Indy
 
Código Delphi [-]
with smtpSendmail do begin
IoHandler:=IdSSLIOHandlerSocketOpenSSL1;
AuthType := satDefault;
Host := 'smtp.gmail.com';
port := 465 ;
useTLS:=utUseExplicitTLS;
Username :='usuariosmtp@dominio.com';
Password :='passwordxxxx';
end;
// CONFIGURACION DEL MENSAJE A ENVIAR

mail := TIdMessage.Create(Self);
with mail do begin
From.Address := 'emialremitente@dominio.com';
Recipients.EMailAddresses := 'destinatario@sudominio.com';
Subject := 'asunto';
body.Text := 'Texto del mensaje';
//TIdAttachmentFile.Create(mail.MessageParts, 'fichero.txt');

end;
try
// CONEXION CON EL SERVIDOR DE CORREO
begin
memoMsg.Lines.add('conectando con el servidor');
smtpSendmail.Connect;
memoMsg.Lines.add('conectado');
try
// ENVIO DEL MENSAJE
begin
memoMsg.Lines.add('enviando mensaje');
smtpSendmail.Send(mail);
end;

Casimiro Notevi 06-12-2012 20:15:26

Cita:

Empezado por Anonymus2009 (Mensaje 451361)
...

Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración :)

Recuerda poner los tags al código fuente, ejemplo:



Gracias :)



.

Anonymus2009 07-12-2012 21:13:35

Enviar Gmail desde W2008 con Indy
 
Perdonad soy nuevo en este foro, sólo quería trasmitirle que las pruebas hechas con las componentes Indy 10 en Windows 2008 me habían funcionado perfectamente con el código que indiqué.

Casimiro Notevi 07-12-2012 21:25:34

¡Ah!, bien, gracias, es que como no habías dicho nada ;)

gustavosv 21-12-2012 04:19:36

A Anonymus2009 le agradezco haber compartido el código del envío de email usando GMAIL, con base en ello logré corregir el mío y ya me funciona OK.

Saludos,


La franja horaria es GMT +2. Ahora son las 20:27:51.

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