2010-01-13 62 views
41

Para cumplir con las regulaciones HIPAA, debemos enviar un correo electrónico desde un sitio externo (fuera del firewall) a un servidor interno de Exchange (dentro del firewall). Nuestros administradores de Exchange nos dicen que debemos usar el cifrado TLS para enviar correos electrónicos desde el servidor web al servidor de correo electrónico.C# ASP.NET Enviar correo electrónico a través de TLS

Nunca antes había usado TLS y no estoy muy familiarizado con él. La búsqueda en Google generó numerosas bibliotecas de pago por uso. ¿Hay algo nativo de .NET que logre esto? Si es así, ¿cómo lo configuro? Si no, ¿hay algo gratis o de código abierto?

configuración actual:

  • ASP.NET C# Aplicación Web
  • 2.0 Marco
  • Usando System.Net.Mail para enviar correo electrónico y archivos adjuntos a través de SMTP
  • IIS 6.0
+4

'SmtpClient.EnableSsl = true;'? –

Respuesta

52

TLS (Transport Level Security) es el término ligeramente más amplio que ha reemplazado a SSL (capa de sockets seguros) para proteger las comunicaciones HTTP. Entonces, lo que se le pide que haga es habilitar SSL.

+5

¡Gracias! ¡Eso fue tonto fácil! – Joshua

+1

Alguien tenía el mismo problema aquí: http://bytes.com/topic/net/answers/671675-smtpclient-enablessl-using-tls –

+3

No todos los servidores SMTP admiten TSL y SSL. – cgalvao1993

22

En SmtpClient hay una propiedad EnableSsl que debe establecer.

decir

SmtpClient client = new SmtpClient(exchangeServer); 
client.EnableSsl = true; 
client.Send(msg); 
+1

Me gusta esta publicación porque creo que es una buena respuesta, pero aún estoy un poco preocupado. Si configuramos EnableSSL en verdadero, ¿* garantizará * que * todos * los servidores de correo electrónico * entre * el servidor de correo electrónico de origen y el servidor de correo electrónico receptor utilizan SSL o TLS? Desde mi punto de vista, el correo electrónico puede rebotar en * muchos * servidores antes de que llegue a su destino final. –

+3

@ShawnEary No, no es así. Simplemente significa que la conexión entre su cliente .NET SMTP y el servidor SMTP inicial es segura, eso es todo. Nada mas. No hay ninguna disposición en SMTP para asegurar toda la ruta que sigue un mensaje de correo electrónico, es por eso que tenemos S/MIME para el cifrado de mensajes. – Dai

17

estaba casi con la misma tecnología como lo hizo, sin embargo yo estaba usando mi aplicación para conectar un servidor de Exchange a través de la plataforma Office 365 en WinForms. Yo también tuve el mismo problema que tú, pero pude lograrlo mediante el uso de un código que tiene una ligera modificación de lo que otros han dado anteriormente.

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

Tuve que usar el puerto 587, que es por supuesto el puerto predeterminado sobre TSL y el hizo la autenticación.

+0

@hiFl señor, ¿qué pasa con el puerto predeterminado para SSL, si quiero que el cliente smtp elija SSL no el TLS? –

+1

465 como dice [el documento] (https://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.enablessl(v=vs.110).aspx) – hiFI

Cuestiones relacionadas