Windows 8 でコードが動作しなくなりました。Windows 互換モードが Windows 7 の場合、コードが機能しません。管理者としてアプリケーションを実行しています。すでにウイルス対策とファイアウォールをオフにしようとしました。別の smtp クライアント (.Net SmtpClient など) を使用して、同じパラメーターで電子メールを送信できます。この問題は、さまざまな Windows 8 コンピューター (自宅、オフィス) で再現されます。簡単なテストアプリケーションを作成しました。コードは Delphi XE、Indy 10.5.7、OpenSSL 1.0.1.3 で記述され、dll は test.exe フォルダーに配置されます。
何か案は?
コード:
SSLHandler.MaxLineAction := maException;
SSLHandler.SSLOptions.Method := sslvTLSv1;
SSLHandler.SSLOptions.Mode := sslmUnassigned;
SSLHandler.SSLOptions.VerifyMode := [];
SSLHandler.SSLOptions.VerifyDepth := 0;
SSLHandler.OnStatusInfo := IdSSLIOHandlerSocketOpenSSL1StatusInfo;
SMTP.IOHandler := SSLHandler;
SMTP.Host := 'smtp.gmail.com';
SMTP.Port := 587;
SMTP.UseTLS := utUseExplicitTLS;
SMTP.Username := FromAddress;
SMTP.Password := AuthPassword;
Email.From.Address := FromAddress;
Email.Recipients.EmailAddresses := ToAddress;
Email.Subject := Subject;
Email.Body.Text := Body;
SMTP.Connect;
SMTP.Send(Email);
SMTP.Disconnect;
出力:
SSL ステータス: 「前/接続初期化」
SSL ステータス: 「前/接続初期化」
SSL ステータス: 「SSLv3 書き込みクライアント ハロー A」
SSL ステータス: 「SSLv3 read server hello A」
「Socket Error # 10060 Connection timed out」というメッセージを含む EIdSocketError。