为了替各个系统建立测试 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:

  • 支援没加密的明文传输。
  • 不支援 SSL/TLS 连接安全性(所谓的 implicit TLS),不管是常用的 465 port 或其他自定义 port,都只会连线 Timeout。
  • 支援 StartTLS 连接安全性(所谓的 explicit TLS),测试 25 port 和常用的 587 port 皆可。
  • 如果必须用SSL/TLS 连接安全性(所谓的 implicit TLS),可改用第三方元件例如:MailKit。
  • 本文同步发表至我的Blog