4

我正在使用最新的 indy 快照(昨天安装)和最新的 SSL 库。

尝试使用 idSMTP 发送邮件时,组件第一次连接时,出现异常:

无法加载 SSL 库

. 有趣的是,重试总是有效的。调试发现问题出在 IsSSLOpenSSLHeader, function Load: boolean, line

@OpenSSL_add_all_algorithms := LoadFunctionCLib('OpenSSL_add_all_algorithms');

为什么它第一次失败而不是第二次失败对我来说仍然是一个谜,但在我继续调查之前,我想好像有人知道这个问题的解决方案。

4

2 回答 2

5

您使用的代码不是最新的快照。这个错误是在几周前修复的。您引用的行不在最新代码中,它已替换为以下内容:

fn_OPENSSL_add_all_algorithms_noconf = 'OPENSSL_add_all_algorithms_noconf';
fn_OpenSSL_add_all_algorithms = 'OpenSSL_add_all_algorithms';

@OpenSSL_add_all_algorithms := LoadOldCLib(fn_OpenSSL_add_all_algorithms, fn_OPENSSL_add_all_algorithms_noconf);
于 2010-03-12T01:28:10.203 回答
0

我在 Win 7/64 上使用 Delphi XE-1,默认安装 SSL 和 Indy。这周我不得不使用 SMTP 和 SSL 做一些工作,我遇到了你报告的同样的问题。我们的应用程序有些复杂,并且已经在多个位置运行和部署,并且它在代码中的多个位置使用 Indy,因此安装更新版本的 Indy 并重新构建等并不是很令人满意。

由于问题只出现在第一遍,我跟踪了一些代码并想出了这个简单、无痛的解决方法:

            smtpClient.connect;
            smtpClient.disconnect;
            smtpClient.connect;
            if not smtpClient.Authenticate then
                raise ... 
            smtpClient.Send(msg);

一旦你调用connnectthen disconnect,SSL 库就会被加载,所以在你第二次调用时connect你就可以开始了。

工作正常。

于 2015-09-18T19:13:25.417 回答