Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.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

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与SSL_Delphi_Ssl_Indy - Fatal编程技术网

Delphi和Indy与SSL

Delphi和Indy与SSL,delphi,ssl,indy,Delphi,Ssl,Indy,Delphi 7和Indy 10.5.8.0 我很抱歉,如果这是重复以前提出的问题,但我无法解决这个问题 我正在使用Indy TidMessageBuilderHTML发送带有嵌入图像的HTML电子邮件,以构建我的HTML电子邮件。这是非常酷的,目前为止效果非常好 我现在的问题是要满足需要SSL/TLS身份验证的SMTP服务器。我在OPENSSL DLL文件方面遇到了很多问题,现在看来32位版本不在64位上运行,等等。我想要一个避免使用DLL文件的解决方法。(最好我需要将其保留为单个exe.ap

Delphi 7和Indy 10.5.8.0

我很抱歉,如果这是重复以前提出的问题,但我无法解决这个问题

我正在使用Indy TidMessageBuilderHTML发送带有嵌入图像的HTML电子邮件,以构建我的HTML电子邮件。这是非常酷的,目前为止效果非常好

我现在的问题是要满足需要SSL/TLS身份验证的SMTP服务器。我在OPENSSL DLL文件方面遇到了很多问题,现在看来32位版本不在64位上运行,等等。我想要一个避免使用DLL文件的解决方法。(最好我需要将其保留为单个exe.application)

我的问题是:我想使用Indy V10,因为它不需要提供OPENSSL dll。有没有办法做到这一点?是否没有支持Indy SSL(TIdSSLIOHandlerSocketOpenSSL)的可用delphi SSL库


此外,我愿意接受其他建议,这些建议将有助于我的html电子邮件嵌入图像。谢谢。

您询问了有关支持TidsLioHandlerSocketOpenSSL类的库的问题,但在其TidsLioHandlerSocketOpenSSL.StartSSL方法中,这正是需要外部DLL的类


最简单的解决方案是提供DLL(32位或64位版本),并在尝试调用“SendMail”功能之前在运行时检查DLL是否存在,这样您就可以向用户显示更容易理解的错误消息,准确地指示应用程序希望找到的文件。

如果您希望“一切”在您的exe中,您需要先嵌入DLL,然后再在dpr文件的uses子句中添加一个单元,该单元的唯一目的是在初始化时从应用程序中提取DLL。似乎奇怪的是,您的DLL在x64上不起作用……SSL的静态链接似乎没有人能做到,可能是因为C库依赖关系太复杂了。嵌入然后加载SSL dll似乎是您唯一的选择,是的,32位dll将在64位窗口上工作。为什么不呢?只是个旁注。您可以从以下位置获取
Indy
兼容的
OpenSSL
库。在那里您还可以找到64位版本的库。谢谢!我的挫折战胜了我。测试pc上的其他应用程序安装了不同版本的dll。我不知道使用了哪个版本,但现在正确的版本驻留在我的程序文件夹中,根据我的理解,这是优先级为1的搜索路径。这很有效。我将发送DLL的。再次感谢潮流引领者!我们的SecureBackbox(请参阅)的SSLBlackbox包提供SSL/TLS的本机实现(包括OpenSSL中缺少的功能),并具有用于Indy的IOHandler类