Delphi XE8 で Delphi XE3 アプリケーションを再コンパイルしています。
アプリケーションは、TIdSMTP オブジェクトを使用して、Amazon SES (アイルランドと北バージニアで試行) にメッセージを送信します。
これらは、TIdSMTP コンポーネントで設定された属性の一部です (更新: さらにフィールドが追加されました)。
IOHandler
次のサブフィールドがありますIdSSLIOHandlerSocketOpenSSL
: isDestination
email-smtp.eu-west-1.amazonaws.com:25、is、is、is、is、is、is、is、is、is、is、is、is、is、is _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 、は、は、は、はHost
email-smtp.eu-west-1.amazonaws.com
IPVersion
Id_IPv4
MaxLineAction
maException
MaxLineLength
16384
Port
25
ReadTimeOut
-1
RecvBufferSize
32768
ReuseSocket
rsOSDependent
SendBufferSize
32768
SSLOptions.Method
sslvTLSv1
SSLOptions.Mode
sslmUnassigned
SSLOptions.SSLVersions
[sslvTLSv1]
TransparentProxy
IdSSLIOHandlerSocketOpenSSL.
TransparentProxy.Autentication
NoAuthentication
TransparentProxy.IPVersion
Id_IPv4
TransparentProxy.Port
1080
TransparentProxy.Version
svNoSocks
UseNagle
True
Port
は25
UseTLS
はutUseExplicitTLS
- 「Indy について」は 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 は今のところデバッグ出力ディレクトリのみを使用し、古い XE3 実行可能ファイルはリリース出力ディレクトリからでも正常に動作します。
更新: この問題は、Dev マシンで古い SSL DLL を更新するだけで修正されました。どうやら最新のIndyはデフォルトで安全でないものを無効にしています。