Ver Mensaje Individual
  #1  
Antiguo 26-09-2012
Allien Allien is offline
Registrado
 
Registrado: jun 2008
Posts: 2
Reputación: 0
Allien Va por buen camino
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...
Responder Con Cita