我寫了一個示例程序,通過複製此KB article中的代碼,並根據用戶信息進行一些編輯。它使用不贊成的.NET庫System.Web.Mail來執行它,因爲新的System.Net.Mail不支持隱式SSL。我使用端口465上的Google smtp服務器進行測試,這是他們的隱式電子郵件端口,並且一切正常。然而,當我把這個給客戶端在他的網絡進行測試,沒有被髮送/接收,這裏是錯誤:無法使用隱式SSL SMTP服務器發送電子郵件
2013-03-07 15:33:43 - The transport failed to connect to the server.
2013-03-07 15:33:43 - at System.Web.Mail.SmtpMail.LateBoundAccessHelper.CallMethod(Object obj, String methodName, Object[] args)
2013-03-07 15:33:43 - at System.Web.Mail.SmtpMail.CdoSysHelper.Send(MailMessage message)
2013-03-07 15:33:43 - at System.Web.Mail.SmtpMail.Send(MailMessage message)
我不是很精通,當涉及到電子郵件SSL所以這裏是我可能理論根源:
假設他是用正確的SMTP服務器和正確的端口(SSL端口),我不知道如果有以下可能是原因:
他們是在郵件服務器上使用SSL,但他沒有在他運行我的機器上安裝證書程序即使他在同一個域上,並使用與發件人相同的電子郵件域名。
他們使用SSL,但他們可能使用NTLM或匿名身份驗證,而我的程序使用基本身份驗證。
對不起,如果我提供的信息很少,因爲我自己在這方面很陌生,所以我還在研究更多。
您是否知道在我的最後可以執行的任何步驟,以確保我的小測試程序可以使用隱式SSL電子郵件服務器的smtp服務器進行發送?
編輯:我沒有在我的代碼中添加以下行來表示我正在使用SSL。
oMsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "true");
謝謝阿米特,不幸的是這不會爲我工作,因爲我看到你正在使用System.Net.Mail庫。它只支持顯式SSL而不是隱式SSL的TLS。如果將其更改爲端口465,則代碼將不會發送,因爲端口587上的gmail是顯式SSL,而465是隱式SSL – Fylix 2013-03-08 00:14:46