【问题标题】:Delphi and Indy with SSL使用 SSL 的 Delphi 和 Indy
【发布时间】:2012-05-04 12:28:54
【问题描述】:

带有 Indy 10.5.8.0 的 Delphi 7。

如果这是重复之前提出的问题,我深表歉意,但我无法解决这个问题。

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

我现在的问题是迎合需要 SSL/TLS 身份验证的 SMTP 服务器。我对 OPENSSL DLL 文件有很多问题,现在看来 32 位版本不能在 64 位等上运行。我想要一个避免使用 DLL 文件的解决方法。 (最好我需要将其保留为单个 exe。应用程序)。

然后我的问题是:我想按原样使用 Indy V10,而不必发送 OPENSSL dll。有没有办法做到这一点?是否没有支持 Indy ssl (TIdSSLIOHandlerSocketOpenSSL) 的可用 delphi SSL 库?

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

【问题讨论】:

  • 如果你想“一切”到你的exe文件中,你需要嵌入dll,在你的dpr文件的uses子句中的所有其他单元之前,添加一个单元,它的唯一目的是提取dll从应用程序初始化。您的 dll 在 x64 上不起作用似乎很奇怪...
  • SSL 的静态链接似乎是没人做的事情,可能是因为 C 库依赖太复杂了。嵌入然后加载 SSL dll 似乎是您唯一的选择,是的,32 位 DLL 将在 64 位窗口上工作。为什么不呢?
  • 只是一个旁注。您可以从here 获得Indy 兼容的OpenSSL 库。在那里您还可以找到 64 位版本的库。
  • 谢谢!我的挫败感战胜了我。测试电脑上的其他应用程序安装了不同版本的 dll。我不知道使用的是哪一个,但现在正确的版本位于我的程序文件夹中,根据我的理解,这是优先级 1 的搜索路径。这行得通。我将运送 DLL。再次感谢潮流引领者!
  • 我们的 SecureBlackbox 的 SSLBlackbox 包(参见 eldos.com/sbb/delphi-ssl.php )提供 SSL/TLS 的本机实现(包括 OpenSSL 中缺少的功能)并具有 Indy 的 IOHandler 类

标签: delphi ssl indy


【解决方案1】:

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

最简单的解决方案是发布 DLL(32 位或 64 位版本),并在运行时检查 DLL 的存在,然后再尝试调用“SendMail”函数,这样您就可以向用户显示更易于理解的错误消息,指示您的应用程序预计会找到哪些文件。

【讨论】:

    猜你喜欢
    • 2012-10-28
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 2012-08-04
    相关资源
    最近更新 更多