尝试在Delphi XE应用程序上使用TIDSMTP发送电子邮件时,出现“套接字错误10060-连接超时”消息。相同的代码可在同一台计算机上的Delphi 2007应用程序上运行。没有安装防火墙或防病毒软件。在两个应用程序上使用相同的DLL(libeay32.dll / ssleay32.dll)。

这是我的代码:

idsmtp1.host = 'xxxx';
idsmtp1.port = 465;
idsmtp1.username = 'x';
idsmtp1.password = 'x';
with ssl1 do
      begin
      SSLOptions.Method := sslvTLSv1;
      SSLOptions.VerifyMode := [];
      SSLOptions.VerifyDepth := 0;
      Destination := 'smtp.gmail.com:465';
      host := 'smtp.gmail.com';
      //OnStatusInfo := ssl1statusinfo;
      end;
idsmtp1.iohandler := ssl1;
idsmtp1.usetls := utUseImplicitTLS;
idsmtp1.UseEhlo := true;
idsmtp1.connect; // here the exception is throw

最佳答案

我不知道为什么,但是在TIdSSLIOHandlerSocketOpenSSL的事件“ onStatusInfo”中添加了一些“暂停”解决了该问题。这是添加的代码:

procedure ssl1StatusInfo(Msg: string);
begin
sleep(500);
application.processmessages;
end;


没有此代码,我总是会收到“套接字错误10060-连接超时”。

10-08 17:40