C#ASP.NET通过TLS发送电子邮件

Jos*_*hua 61 asp.net ssl c#-2.0

为了符合HIPAA规定,我们需要从外部站点(防火墙外)向内部Exchange服务器(防火墙内)发送电子邮件.我们的Exchange管理员告诉我们,我们需要使用TLS加密将邮件从Web服务器发送到电子邮件服务器.

我之前从未使用过TLS,我对它不是很熟悉.在Google上搜索带来了许多付费使用的库.有什么原生的.NET可以实现这一目标吗?如果是,我该如何配置?如果没有,是否有免费或开源的东西?

当前配置:

  • ASP.NET C#Web应用程序
  • 2.0框架
  • 使用System.Net.Mail通过SMTP发送电子邮件和附件
  • IIS 6.0

Dav*_*d M 68

TLS(传输级别安全性)是一个稍微宽泛的术语,它取代了SSL(安全套接字层)以保护HTTP通信.所以你被要求做的是启用SSL.

  • 并非每个SMTP服务器都支持TSL和SSL. (4认同)

Mar*_*rke 29

在SmtpClient上,您将设置一个EnableSsl属性.

SmtpClient client = new SmtpClient(exchangeServer);
client.EnableSsl = true;
client.Send(msg);
Run Code Online (Sandbox Code Playgroud)

  • @ShawnEary不,它没有.它只是意味着.NET SMTP客户端和初始SMTP服务器之间的连接是安全的 - 就是这样.而已.SMTP中没有规定保护整个路由的电子邮件消息,这就是为什么我们有S/MIME进行邮件加密的原因. (7认同)
  • 我喜欢这篇文章,因为我认为这是一个很好的答案,但我仍然有点担心.如果我们将EnableSSL设置为true,它是否*保证*原始电子邮件服务器和接收电子邮件服务器之间**所有*电子邮件服务器*使用SSL或TLS?根据我的理解,电子邮件有时可能会在*许多*服务器到达其最终目的地之前反弹. (3认同)

hiF*_*iFI 21

我几乎使用了与您相同的技术,但是我使用我的应用程序通过WinForms上的Office 365平台连接Exchange Server.我也遇到了和你一样的问题,但是能够通过使用对上面给出的内容略有修改的代码来完成.

SmtpClient client = new SmtpClient(exchangeServer, 587);
client.Credentials = new System.Net.NetworkCredential(username, password);
client.EnableSsl = true;
client.Send(msg);
Run Code Online (Sandbox Code Playgroud)

我不得不使用端口587,它当然是TSL上的默认端口,并且进行了身份验证.

  • 465 正如 [文档所说] (https://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.enablessl(v=vs.110).aspx) (2认同)