2010-01-13 14 views
41

Um den Bestimmungen von HIPAA zu entsprechen, müssen wir E-Mails von einer externen Site (außerhalb der Firewall) an einen internen Exchange-Server (innerhalb der Firewall) senden. Unsere Exchange-Administratoren sagen uns, dass wir die TLS-Verschlüsselung verwenden müssen, um E-Mails vom Webserver zum E-Mail-Server zu senden.C# ASP.NET E-Mail senden über TLS

Ich habe noch nie zuvor TLS verwendet und bin damit nicht vertraut. Suche auf Google, da zahlreiche kostenpflichtige Bibliotheken erstellt wurden. Gibt es irgendetwas, das in .NET nativ ist, um dies zu erreichen? Wenn ja, wie konfiguriere ich es? Wenn nicht, gibt es etwas Frei oder Open Source?

Aktuelle Konfiguration:

  • ASP.NET C# Web Application
  • 2.0 Framework
  • System.Net.Mail Mit E-Mails und Anhänge per SMTP senden
  • IIS 6,0
+4

'SmtpClient.EnableSsl = true;'? –

Antwort

52

TLS (Transport Level Security) ist der etwas breitere Begriff, der SSL (Secure Sockets Layer) beim Sichern der HTTP-Kommunikation ersetzt hat. Was Sie also tun müssen, ist SSL aktivieren.

+5

Danke! Das war dumm einfach! – Joshua

+1

Jemand hatte das gleiche Problem hier: http://bytes.com/topic/net/answers/671675-smtpclient-enablessl-using-tls –

+3

Nicht jeder SMTP-Server unterstützt sowohl TSL und SSL. – cgalvao1993

22

Auf SmtpClient gibt es eine EnableSsl-Eigenschaft, die Sie festlegen würden.

heißt

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

Ich mag diesen Beitrag, da ich denke, es ist eine gute Antwort, aber ich bin immer noch ein wenig besorgt. Wenn wir EnableSSL auf "true" setzen, wird garantiert, dass * alle * E-Mail-Server * zwischen * dem ursprünglichen E-Mail-Server und dem empfangenden E-Mail-Server SSL oder TLS verwenden? Nach meinem Verständnis kann E-Mail manchmal über * viele * Server springen, bevor es sein endgültiges Ziel erreicht. –

+3

@ShawnEary Nein, tut es nicht. Es bedeutet lediglich, dass die Verbindung zwischen Ihrem .NET SMTP-Client und dem ursprünglichen SMTP-Server sicher ist - das ist es. Nichts mehr. Es gibt in SMTP keine Vorkehrungen, um die gesamte Route zu sichern, der eine E-Mail-Nachricht folgt. Aus diesem Grund haben wir S/MIME für die Nachrichtenverschlüsselung. – Dai

17

ich fast wurde mit der gleichen Technologie wie Sie getan haben, aber ich war meinen app mit einem Exchange Server über Office 365-Plattform auf WinForms zu verbinden. Ich hatte auch das gleiche Problem wie Sie, aber es war in der Lage, durch die Verwendung von Code zu erreichen, der eine leichte Änderung dessen hat, was andere oben angegeben haben.

Ich musste den Port 587 verwenden, der ist natürlich der Standard-Port über TSL und die tat die Authentifizierung.

+0

@hiFl Herr, was ist mit dem Standard-Port für SSL, wenn ich möchte, dass der SMTP-Client SSL nicht die TLS wählen? –

+1

465 als das [Dokument sagt] (https://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.enablessl(v=vs.110).aspx) – hiFI