题
我使用的最新快照印(昨天安装)和最新的SSL库。
在尝试使用idSMTP,首次将组件连接到发送邮件,我得到一个异常:
便无法加载SSL库
。有趣的是,重试工作的始终。调试我发现,这个问题是在IsSSLOpenSSLHeader,功能Loaad:布尔,线
@OpenSSL_add_all_algorithms := LoadFunctionCLib('OpenSSL_add_all_algorithms');
为什么会失败的第一次,而不是第二仍然是一个谜给我,但我去调查之前,我想因为如果有人知道解决这个问题。
解决方案
您正在使用的代码是不是最新的快照。该bug几个星期前是固定的。你引用的线是不是在最新的代码,它已被替换为以下内容:
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);
其他提示
我使用的Delphi XE-1在Win 7/64,与由缺省安装在SSL和印。这个星期,我不得不做一些工作,SMTP和SSL,和我遇到了你报了同样的问题。我们的应用程序有些复杂,已经是生活和部署在几个地点,并在代码中使用了印在几个点,所以在安装印的新版本和重建等,不是很可口。
由于问题只出现在第一遍中,我通过一些代码的追踪,并用这种简单的,无痛的解决方法提出了:
smtpClient.connect;
smtpClient.disconnect;
smtpClient.connect;
if not smtpClient.Authenticate then
raise ...
smtpClient.Send(msg);
一旦你调用connnect
然后disconnect
,SSL库被加载,等你的第二个呼叫connect
你是好去。
工作正常。
不隶属于 StackOverflow