[我在带有OpenSSL 1.0.2m的Delphi 5下使用Indy 10 build 5438。
使用某些(不是全部)电子邮件帐户发送的TLS v1.2电子邮件存在一些问题,我想尝试为Indy 10升级OpenSSL DLL文件,但我不知道哪个兼容。
哪个是与Indy 10 build 5438兼容的最新(!)OpenSSL版本?
我已经尝试用fulld_5.bat
在Delphi 5下安装最新的Indy 10 build 5519,但失败:
IdIMAP4.pas(2958) Error: Undeclared identifier: 'LLTextBuf'
IdIMAP4.pas(2958) Error: Incompatible types
IdIMAP4.pas(3185)
IdIMAP4.pas(3697)
IdIMAP4.pas(4209)
IdIMAP4.pas(4721)
IdIMAP4.pas(5233)
IdIMAP4.pas(5745)
IdIMAP4.pas(6257)
IdIMAP4.pas(6769)
IdIMAP4.pas(7251)
IndyProtocols50.dpk(267) Fatal: Could not compile used unit 'IdIMAP4.pas'
Error!
Indy 10使用标准的OpenSSL DLL。 OpenSSL的任何1.0.2版本都与Indy(Indy does not support OpenSSL 1.1.x yet)兼容。但是,Indy的Fulgan镜像上提供了OpenSSL 1的预构建版本(不具有MS Visual C ++运行时依赖项构建):
1:在撰写本文时,那里可用的最新版本是1.0.2t。
关于IdIMAP4.pas
错误,这是最近代码签入中的错字。在2958行上,需要将对LLTextBuf
的引用更改为LTextBuf
。
LUseNonSyncLiteral := LCanUseNonSyncLiteral and ((not LNonSyncLiteralIsLimited) or (Length({LLTextBuf}LTextBuf) <= 4096)); // <-- change LLTextBuf to LTextBuf
我现在已经在Indy官方代码(SVN修订版5520)中修复了该问题。