2010-01-13 25 views
41

HIPAA yönetmeliklerine uymak için, harici bir siteden (güvenlik duvarının dışında) dahili bir Exchange sunucusuna (güvenlik duvarının içinde) e-posta göndermemiz gerekir. Exchange yöneticilerimiz, web sunucusundan e-posta sunucusuna posta göndermek için TLS şifrelemesini kullanmamız gerektiğini söylüyor.C# ASP.NET TLS yoluyla gönder E-posta gönder

Daha önce hiç TLS kullanmamıştım ve çok aşina değilim. Google'da arama yapmak için çok sayıda kullanım için ödenen kütüphane oluşturuldu. Bunu gerçekleştirecek .NET'e özgü bir şey var mı? Eğer öyleyse, nasıl yapılandırabilirim? Yoksa, ücretsiz veya açık bir şey var mı?

Güncel Yapılandırma:

  • ASP.NET C# Web Uygulaması
  • 2.0 Çerçeve SMTP
  • aracılığıyla e-posta ve ekleri göndermek için System.Net.Mail kullanma
  • 6.0
+4

'SmtpClient.EnableSsl = true;'? –

cevap

52
IIS

TLS (Aktarım Düzeyi Güvenliği), HTTP iletişiminin güvenliğini sağlamada SSL (Güvenli Yuva Katmanı) yerini alan daha hafif bir terimdir. Yani yapmanız gereken şey SSL'yi etkinleştirmektir.

+5

Teşekkürler! Bu aptaldı kolaydı! – Joshua

+1

Birisi burada aynı sorunu vardı: http://bytes.com/topic/net/answers/671675-smtpclient-enablessl-using-tls –

+3

Her SMTP sunucusu hem TSL hem de SSL'yi desteklemiyor. – cgalvao1993

22

SmtpClient üzerinde, ayarladığınız bir EnableSsl özelliği vardır.

yani

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

İyi bir cevap olduğunu düşündüğümden beri bu yazıyı beğeniyorum ama yine de biraz endişeliyim. EnableSSL öğesini true olarak ayarlarsak, * e-posta sunucusu * ile gelen e-posta sunucusu arasındaki * tüm * e-posta sunucularının * ve e-posta sunucusunun SSL veya TLS kullandığını * garanti eder mi? Anlayışımdan, e-posta bazen son hedefe ulaşmadan önce * çok sayıda sunucuya sıçrayabilir. –

+3

@ShawnEary Hayır, öyle değil. Sadece .NET SMTP istemciniz ile ilk SMTP sunucusu arasındaki bağlantı güvenli demektir - işte bu kadar. Daha fazla bir şey yok. SMTP'de, tüm e-posta mesajını takip etmek için bir yol yoktur, bu yüzden mesaj şifreleme için S/MIME'ye sahibiz. – Dai

17

sizin yaptığınız gibi neredeyse ancak WinForms Office 365 platformu üzerinden bir Exchange Server bağlamak için Uygulamamı kullanıyordu, aynı teknolojiyi kullanıyordu. Ben de sizin yaptığınız gibi aynı meseleye sahiptim, ancak başkalarının yukarıda verdikleri şeylerin hafif bir modifikasyonuna sahip olan kodu kullanarak başarabiliyordum.

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

Tabii TSL üzerinden varsayılan bağlantı noktası ve kimlik yaptı Liman 587, kullanmak zorunda kaldı.

+0

@hiFl efendim, smtp istemcisinin TLS'yi SSL seçmesini istemediğimde SSL için varsayılan bağlantı noktası nedir? [Document says] olarak –

+1

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