踩雷

.NET SmtpClient 不支援透過 SSL/TLS 通訊發信

作者:

分類:

為什麼 Blog 名要取為「程式卡卡🐸哇哇」呢?

只要持續 Coding,幾乎每星期都會踩到莫名的雷吃了我好幾個小時…Orz

為了替各個系統建立測試 EMail 發信的環境,我使用 hMailServer 建立收發 EMail 伺服器,並用 openssl 建立自簽憑證供 SSL 使用。
使用 .NET 8 的 SmtpClient 測試發信,測 25 port 發信不啟用 SSL (明文通道發信)-理所當然地成功,但測發信到 465 port + 啟用 SSL/TLS 就是一直 Timeout,找遍了 EMail 伺服器設置、SSL 證書及 TLS 設定都找不到任何原因…又卡了一個下午。

接近下班時間,趕快往下測 587 port + StartTLS 發信並啟用SSL,結果是一下就成功,證明下午的查各種設置、設定都搞錯方向了,問題就是「EMail 伺服器啟用 SSL/TLS」!

google「.net smtp client tls」果然在SMTP and Implicit TLS from a C# .NET application 找到了正解!

結論就是 .NET SmtpClient (.NET Framework 也是):

  1. 支援沒加密的明文傳輸。
  2. 不支援 SSL/TLS 連接安全性(所謂的 implicit TLS),不管是常用的 465 port 或其他自定義 port,都只會連線 Timeout。
  3. 支援 StartTLS 連接安全性(所謂的 explicit TLS),測試 25 port 和常用的 587 port 皆可。
  4. 如果必須用SSL/TLS 連接安全性(所謂的 implicit TLS),可改用第三方元件例如:MailKit

最後更新日期:2024-12-25

Views: 12

Views: 12


留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *