0

我在 Delphi XE8 中重新编译 Delphi XE3 应用程序。

该应用程序使用 TIdSMTP 对象将消息发送到 Amazon SES(尝试过爱尔兰和北弗吉尼亚)。

这些是 TIdSMTP 组件中设置的一些属性(更新:添加了更多字段):

  • IOHandler包含IdSSLIOHandlerSocketOpenSSL以下子字段: Destinationis email-smtp.eu-west-1.amazonaws.com:25, Hostis email-smtp.eu-west-1.amazonaws.com, IPVersionis Id_IPv4, MaxLineActionis maException, MaxLineLengthis 16384, Portis 25, ReadTimeOutis -1, RecvBufferSizeis 32768, ReuseSocketis rsOSDependent, SendBufferSizeis 32768, SSLOptions.Methodis sslvTLSv1, SSLOptions.Modeis sslmUnassigned, SSLOptions.SSLVersionsis [sslvTLSv1], TransparentProxyis IdSSLIOHandlerSocketOpenSSL., TransparentProxy.Autenticationis NoAuthentication,TransparentProxy.IPVersionId_IPv4,TransparentProxy.Port1080,TransparentProxy.VersionsvNoSocks,UseNagleTrue

  • Port25

  • UseTLSutUseExplicitTLS
  • “关于印地”是 10.6.2.5263

使用 XE8,我得到“SSL 协商失败”。handler.Send(msg);以下代码中的异常。完全相同的代码适用于 XE3,所以我猜它可能与 Indy 更新有关。

var
  handler: TIdSMTP;
.
.
handler.

handler.Connect;
handler.Send(msg);

为什么我在 XE8 中得到这个异常?现在安装 XE8 的机器与安装 XE3 的机器相同,并且 SSL dll 仍然在各自的 Degug 和 Release 输出目录中。XE8 目前只使用 Debug 输出目录,旧的 XE3 可执行文件仍然可以在 Release 输出目录中正常工作。

更新:只需更新开发机器中的旧 SSL DLL,即可解决此问题。显然,最新的 Indy 默认禁用不安全的东西。

4

0 回答 0