.net - 如何将 SMTP 与 c# 4/.NET 4 连接到端口 465/SSL(当前不受支持)...需要想法

标签 .net c#-4.0 ssl .net-4.0 smtp

首先,我通过反复试验发现 c# 4/.NET 4 有一些我无法解释的严重限制。

Microsoft 在 c# 4/.NET 4 中通过端口 465 支持 SSL

Microsoft 通过“STARTTLS”587 上支持SSL

我需要使用 465/SSL 因为我的邮件服务器 hMailServer 不支持“STARTTLS”。

我曾希望开箱即用地使用 c# 4/.NET 4 ...我不想购买任何第三方解决方案。

我想做的是为 在端口 465 上使用 SSL 的 SMTP 制定我自己的解决方案。

我猜我可能必须使用 C# 非托管代码来实现这一点。

有什么想法吗?,谢谢。 rgds/格里

引用资料:

"configuring SSL confusion..." , hMailServer 论坛帖子。

MSDN:"SmtpClient.EnableSsl Property" :
“另一种连接方法是在发送任何协议(protocol)命令之前预先建立 SSL session 。这种连接方法有时称为 SMTP/SSL、SMTP over SSL 或 SMTPS,默认情况下使用端口 465。这种使用 SSL 的替代连接方法目前不支持。”

P.S.:我搜索了 SO 和 Google,但找不到任何直接相关的内容。

最佳答案

如果可以,并且它仍然有效(“此 API 现在已过时”),您应该能够使用 System.Web.Mail.MailMessage 来使用 SMTPS(带有预先 SSL/TLS 的 SMTP) :

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

当然,这个 API 现在在 .Net 4 中已经过时的事实并不理想。它可能在实践中仍然有效。

否则,您可能不得不依赖第 3 部分库或类似 stunnel 的东西.

关于.net - 如何将 SMTP 与 c# 4/.NET 4 连接到端口 465/SSL(当前不受支持)...需要想法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8378360/

相关文章:

C# 从另一个程序启动一个程序

.net - Infragistics UltraWinGrid 删除确认

C#/WinForms/INotifyPropertyChanged : Elegant way to check for equality when either or both operands might be null

c# - 将 textwriter 分配给 memory writer

c# - MTOM - 在 VS 2010 中读取时遇到无效的 MIME 内容类型 header

mysql 错误 2026 RHEL 6

java - 打开连接失败 : javax.net.ssl.SSLException : Unrecognized SSL message, 明文连接?

c# - Winforms中如何设置自定义控件中Colors的默认值?

c - 链接 OpenSSL 时对 t1sl_steup_key_block 的 undefined reference

java - 消费者没有将连接返回到我的数据库连接池