2012-04-23 142 views
5

德爾福7與Indy 10.5.8.0。德爾福和Indy與SSL

我很抱歉,如果這是重新調整以前提出的問題,但我不能解決這個問題。

我使用Indy TidMessageBuilderHTML發送帶有嵌入式圖像的HTML電子郵件來構建我的html電子郵件。這非常酷,迄今爲止完美。

我現在的問題是要滿足需要SSL/TLS身份驗證的SMTP服務器。我有OPENSSL DLL文件有這麼多問題,現在看來,32位版本不能運行在64位等。我想要避免使用DLL文件的解決方法。 (最好我需要保持它單個EXE應用程序)。

我的問題是:我想使用Indy V10,因爲它不需要運送OPENSSL dll。有沒有辦法做到這一點?是否沒有可用的支持Indy SSL(TIdSSLIOHandlerSocketOpenSSL)的delphi SSL庫?

此外,我接受其他建議,這將有助於我的HTML電子郵件與嵌入式圖像。謝謝。

+0

如果你想把所有東西都放到你的exe文件中,你需要在你的dpr文件的uses子句中的所有其他單元之前嵌入dll,添加一個單元,它的唯一目的是在初始化時從應用程序中提取dll 。似乎很奇怪,你的dll在x64上無法工作...... – ComputerSaysNo 2012-04-23 21:06:40

+0

SSL的靜態鏈接似乎是沒有人做的,可能是因爲C庫依賴關係太複雜。嵌入然後加載SSL DLL似乎是你唯一的選擇,是的,一個32位的DLL將在64位窗口上工作。爲什麼不呢? – 2012-04-23 21:20:12

+2

只是一個旁註。您可以從['here'](http://indy.fulgan.com/SSL/)獲得與Indy兼容的'OpenSSL'庫。在那裏你會發現這些庫的64位版本。 – TLama 2012-04-23 21:32:36

回答

2

您問過在TIdSSLIOHandlerSocketOpenSSL.StartSSL方法中支持TIdSSLIOHandlerSocketOpenSSL類的庫,但這正是需要外部DLL的類。

最簡單的解決方案是發佈DLL(32位或64位版本),並在運行時檢查DLL的存在性,然後嘗試調用您的「SendMail」函數,這樣您可以向用戶展示更易於理解的錯誤消息,準確指出應用程序預計會找到哪些文件。