Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi Indy 10-IdSMTP.Connect-Rising“;无法加载SSL库。”;_Delphi_Ssl_Smtp_Indy_Delphi 6 - Fatal编程技术网

Delphi Indy 10-IdSMTP.Connect-Rising“;无法加载SSL库。”;

Delphi Indy 10-IdSMTP.Connect-Rising“;无法加载SSL库。”;,delphi,ssl,smtp,indy,delphi-6,Delphi,Ssl,Smtp,Indy,Delphi 6,以下是我的配置: IdSMTP1.Host := 'smtp.gmail.com'; IdSMTP1.Port := 587; IdSMTP1.UseTLS := utUseExplicitTLS; IdSMTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1; IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvTLSv1; 我已经从下载了OpenSSL,libeay32.dll和ssleay32.

以下是我的配置:

IdSMTP1.Host := 'smtp.gmail.com';
IdSMTP1.Port := 587;
IdSMTP1.UseTLS := utUseExplicitTLS;
IdSMTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvTLSv1;
我已经从下载了OpenSSL,
libeay32.dll
ssleay32.dll
都在我的应用程序的同一文件夹中

印地版本为:10.0.52

以下命令正在我的计算机上运行:

telnet smtp.gmail.com 587
如何使用Indy在启用TLS的SMTP服务器(以我的Gmail为例)中正确连接

似乎
IdSSLOpenSSLHeaders.Load
找不到以下过程的地址,其中包括:

  @IdSslSessionGetId := LoadIndyFunction(fn_SSL_SESSION_get_id);
  @IdSslSessionGetIdCtx := LoadIndyFunction(fn_SSL_SESSION_get_id_ctx);
  @IdSslCtxGetVersion := LoadIndyFunction(fn_SSL_CTX_get_version);
  @IdSslCtxSetOptions := LoadIndyFunction(fn_SSL_CTX_set_options);

  @iddes_set_odd_parity := LoadFunctionCLib(fn_des_set_odd_parity);
  @iddes_set_key := LoadFunctionCLib(fn_des_set_key);
  @iddes_ecb_encrypt := LoadFunctionCLib(fn_des_ecb_encrypt);
这是从加载失败的
返回的消息:

 SSL_CTX_set_info_callback_indy 
 X509_STORE_CTX_get_app_data_indy 
 X509_get_notBefore_indy 
 X509_get_notAfter_indy 
 SSL_SESSION_get_id_indy 
 SSL_SESSION_get_id_ctx_indy 
 SSL_CTX_get_version_indy 
 SSL_CTX_set_options_indy 
 des_set_odd_parity 
 des_set_key des_ecb_encrypt

以下是Embarcadero论坛中以下讨论的引述:

Indy 8、9和早期10版本使用定制的OpenSSL DLL,因为 OpenSSL并没有公开Indy需要访问的所有内容,因此Indy必须添加 DLL的一些自定义函数。后来Indy 10的版本切换到了 官方OpenSSL DLL

Indy的定制OpenSSL DLL不再分布在任何地方(据我所知) 的),但您可以尝试此存档下载:

Fulgan提供了一些老的Indy特定的OpenSSL DLL


10.0.52是Indy 10的过时版本。自那次发布以来,Indy 10有了很多变化。您真的应该升级到,然后可以使用Fulgan提供的最新OpenSSL dll。

我遵循这一点,我相信问题在于dll的正确版本。我必须测试每一个吗?这是你使用的版本。@RemyLebeau谢谢你,Remy。谢谢特拉玛,谢谢你抽出时间