Indy 10-IdSMTP.Connect raising " не удалось загрузить библиотеку SSL."

вот моя конфигурация:

IdSMTP1.Host := 'smtp.gmail.com';
IdSMTP1.Port := 587;
IdSMTP1.UseTLS := utUseExplicitTLS;
IdSMTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvTLSv1;

Я загрузил OpenSSL из здесь, и libeay32.dll и ssleay32.dll находятся в той же папке моего приложения.

версия Indy: 10.0.52

на моей машине работает следующая команда:

telnet smtp.gmail.com 587

Как правильно подключиться к SMTP-серверу с поддержкой TLS, в моем случае Gmail, используя Indy?

кажется 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);

это сообщение, возвращенное из WhichFailedToLoad:

 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

1 ответов


вот цитата из следующего обсуждения на форумах Embarcadero:

OpenSSL версия для работы с indy 10.0.52

Indy 8, 9 и ранние версии 10 использовали пользовательские библиотеки OpenSSL, потому что OpenSSL не раскрывал все, к чему инди нуждался в доступе, поэтому инди должен был добавить несколько пользовательских функций для DLL. Позже версии Indy 10 переключились на официальный OpenSSL DLL.

пользовательские библиотеки OpenSSL Indy не являются дольше распространяется в любом месте (что я знаю of), но вы можете попробовать эту архивную загрузку:

http://web.archive.org/web/20071022121646/http://www.intelicom.si/www.nsf/2434100e396ad3f3c125705100369374/d6b8e150fe453facc1257082006fc8b9/$FILE/indy_openssl096g.zip

некоторые старые инди-специфическое в OpenSSL dll-файлы доступны в папка архива SSL.

10.0.52 является устаревшим выпуском Indy 10. Там были много изменений в Indy 10 с момента выпуска. Вы действительно должны перейти на современный выпуск Indy 10, а затем вы можете использовать последний в OpenSSL библиотеки DLL, которые доступны в основная папка SSL.