iT邦幫忙

0

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

  • 分享至 

  • xImage
  •  

為了替各個系統建立測試 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:

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

本文同步發表至我的Blog


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
cong_it
iT邦新手 5 級 ‧ 2024-12-26 10:16:09

受害者+1,納悶的是都2024年為啥還沒有技援TLS功能,而 StartTLS 選項 google 後似乎是會先確認通訊是否支援 TLS ,若無則仍以明文傳輸,結果還是一樣不對信件做加密。

我要留言

立即登入留言