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 con IDSMTP - connection closed gracefully (https://www.clubdelphi.com/foros/showthread.php?t=97590)

emeceuy 17-07-2025 17:17:32

enviar correo con IDSMTP - connection closed gracefully
 
Hola buenas tardes !

Tengo un problema al enviar correo electrónico usando los componentes de Indy SMTP de XE3.

Desde mi computadora, ya sea debugeando desde el IDE o corriendo el ejecutable directamente, no tengo ningún problema. El correo se envía y sin errores en ambos casos.
Pero desde computadoras en 2 clientes distintos (ejecutando el exe), casi instantáneamente al intentar enviar tira el error de "CONNECTION CLOSED GRACEFULLY" y no se envia nada.

No entiendo porque desde mi PC no hay problema y desde otras si. Todas las PCs corren en Windows 10.

Dejo el codigo para que lo vean, es bien simple.

Código:

procedure TfrmConfiguracion.btnTestEMail2Click(Sender: TObject);
begin
  mem.Lines.Add(formatdatetime('dd/mm/yyyy HH:nn:ss:zzz',now)+' '+'test mail 2: entró');

  with frmPrincipalMenu do
    begin
    idmessage1.From.Name:='KS NOTIFICACIONES';
    idmessage1.From.Address:='[email protected]';
    idmessage1.Recipients.EMailAddresses:=edtEmailTest.text;
    idmessage1.Subject:='Test de CORREO ELECTRONICO - '+formatdatetime('dd/mm/yyyy HH:nn:ss',now);
    idmessage1.Body.Text:='Test de CORREO ELECTRONICO'+#13+'KS NOTIFICACIONES'+#13+formatdatetime('dd/mm/yyyy HH:nn:ss',now);

    mem.Lines.Add(formatdatetime('dd/mm/yyyy HH:nn:ss:zzz',now)+' '+'test mail 2: mensaje armado');

    idsmtp1.IOHandler:=IdSSLIOHandlerSocketOpenSSL1;
    idsmtp1.UseTLS:=utUseExplicitTLS;
    IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method:=sslvtlsv1_2;
    idsmtp1.Host:=vEma.Host;
    idsmtp1.Port:=vEma.Puerto;
    idsmtp1.Username:=vEma.Usuario;
    idsmtp1.Password:=vEma.Contrasena;

    mem.Lines.Add(formatdatetime('dd/mm/yyyy HH:nn:ss:zzz',now)+' '+'test mail 2: antes conectar');
    idsmtp1.Connect;

    mem.Lines.Add(formatdatetime('dd/mm/yyyy HH:nn:ss:zzz',now)+' '+'test mail 2: antes enviar');
    idsmtp1.Send(idmessage1);

    mem.Lines.Add(formatdatetime('dd/mm/yyyy HH:nn:ss:zzz',now)+' '+'test mail 2: antes desconectar');
    idsmtp1.Disconnect;

    mem.Lines.Add(formatdatetime('dd/mm/yyyy HH:nn:ss:zzz',now)+' '+'test mail 2: salió');
  end;
end;

Muchas gracias desde ya !!!

Saludos, Marcelo.

Casimiro Noteví 17-07-2025 18:51:48

-Bloqueo por firewall o antivirus
El firewall o antivirus en los equipos de cliente puede estar cerrando la conexión SMTP antes de que se complete.
Prueba desactivando el antivirus/firewall temporalmente o añadir el ejecutable a la lista blanca.

-TLS/SSL mal configurado en equipos cliente
Puede que tu equipo tenga las bibliotecas necesarias para negociar correctamente TLS/SSL (por ejemplo, OpenSSL), pero los clientes no tienen los .dll de OpenSSL (libeay32.dll y ssleay32.dll o las versiones nuevas: libcrypto-1_1.dll y libssl-1_1.dll).
Asegúrate de incluir los DLLs correctos junto con tu ejecutable en los equipos cliente.
La versión si tu programa es 32 bits, será:
https://indy.fulgan.com/SSL/openssl-...i386-win32.zip

emeceuy 17-07-2025 19:28:32

Hola Casimiro ! Gracias por tu respuesta !

Ya probe apagando el firewall y poniendo al ejecutable y al puerto en la lista blanca del antivirus, y sigue igual.

Ahora voy a probar lo de las dll y te comento.

Saludos.

emeceuy 17-07-2025 23:36:07

Solo con agregar esas 2 dll en el directorio del ejecutable, funciona perfectamente !

Crack Casimiro ! Muchas gracias !

Saludos, Marcelo.


La franja horaria es GMT +2. Ahora son las 11:26:53.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi