2011-12-04 102 views
0

首先,我通過試驗和錯誤發現c#4/.NET 4有一些嚴重的限制,對我來說無法解釋。如何將SMTP與c#4/.NET 4連接到端口465/SSL(目前不支持)...需要想法

微軟支持SSL通過端口在C#4/.NET 4

微軟支持在 SSL通過「STARTTLS」

我需要使用465/SSL因爲我的郵件服務器hMailServer不支持「STARTTLS」。

我曾希望使用c#4/.NET 4開箱即用......我不想購買任何第三方解決方案。

我想要做的是製作我自己的解決方案SMTP使用端口465上的SSL。

我猜我可能不得不使用c#非託管代碼來實現此目的。

有什麼想法?,請&謝謝。 RGDS /格里

參考文獻:

"configuring SSL confusion...",hMailServer論壇主題。

MSDN:"SmtpClient.EnableSsl Property"
「的另一種連接方法是其中一個SSL會話被建立在前面的任何協議命令被髮送之前,此連接方法有時被稱爲SMTP/SSL,SMTP通過SSL,或SMTPS和默認。使用端口465.目前不支持使用SSL的備用連接方法。「

P.S .:我搜索了SO和Google,並且找不到任何直接相關的東西。

+1

STARTTLS> SMTP通過SSL –

+1

@Joel,STARTTLS是SMTP通過SSL/TLS的答案,從普通SMTP升級後,相對於SMTPS(也可被稱爲SMTP over SSL),其中TLS連接從一開始就建立:http://stackoverflow.com/questions/3660798/what-happens-on-the-wire-when-a-tls-ldap-or-tls- http-connection-is-set-up/3661416#3661416 – Bruno

回答

0

正如你已經發現,MS明確表示,你想要什麼不是「開箱即用」支持。
而且你不想使用任何第三方庫。

的可能性,以適應兩個:

  • 你可以實現所需的協議(SMTPS)自己(不推薦!)OR
  • 使用一些TCP隧道機制/代理(這反過來又意味着第三方庫)或
  • ,你可以從你目前的SMTP服務器(hMailServer)切換到支持STARTTLS

編輯 - 按評論一些庫支持 「SMTP與implicitc SSL」:

+0

儘管我不想購買任何第三方解決方案,但我願意檢查它們,並且也考慮開源,所以,是的,請確實提供了一些鏈接。日Thnx。 – gerryLowry

+0

@gerryLowry看到我的編輯上面... – Yahia

+0

另一個免費的開源替代是:https://www.nuget.org/packages/AIM –

0

如果可以的話,如果它仍然有效(「這個API現在已過時」),你應該使用System.Web.Mail.MailMessage能夠使用SMTPS(SMTP用的前期SSL/TLS):

System.Web.Mail.MailMessage mailMsg = new System.Web.Mail.MailMessage(); 
// ... 
mailMsg.Fields.Add 
      ("http://schemas.microsoft.com/cdo/configuration/smtpusessl", 
       true); 

當然,這個API現在已經在.Net 4中過時了,這並不理想。它在實踐中可能仍然有效。

如果沒有這樣做,您可能不得不依賴於第三方庫或諸如stunnel之類的東西。

+0

謝謝你...我知道棄用的System.Web.Mail API;我很難使用任何微軟可以隨時「拔插頭」的東西。 – gerryLowry

+0

@gerryLowry,根據需要如何與系統的其他部分整合(特別是關於許可),在應用程序旁邊運行stunnel應該會有所幫助。 – Bruno

0

你可以建立一個ssl TCP/IP連接到你的smtp服務器,生成正確的命令和頭文件併發送它們。 但是,這太混亂了。 我已經在[Aegis Implicit Mail(AIM)](https://sourceforge.net/projects/netimplicitssl/)項目中完成了它。嘗試下載它的源代碼並看看。

你可以找出所有的問題here