2010-01-13 45 views
41

Để tuân thủ các quy định HIPAA, chúng tôi cần gửi email từ một trang bên ngoài (bên ngoài tường lửa) đến máy chủ Exchange nội bộ (bên trong tường lửa). Quản trị viên Exchange của chúng tôi cho chúng tôi biết rằng chúng tôi cần sử dụng mã hóa TLS để gửi thư từ máy chủ web đến máy chủ email.C# ASP.NET Gửi Email qua TLS

Tôi chưa bao giờ sử dụng TLS trước đây và tôi không quen thuộc lắm với nó. Tìm kiếm trên Google như đã đưa ra rất nhiều thư viện được trả tiền để sử dụng. Có bất cứ điều gì bản địa để .NET sẽ thực hiện điều này? Nếu vậy, làm thế nào để cấu hình nó? Nếu không, có cái gì đó miễn phí hay nguồn mở?

Cấu hình hiện tại:

  • ASP.NET C# Web Application
  • 2.0 Khung
  • Sử dụng System.Net.Mail để gửi email và file đính kèm qua SMTP
  • IIS 6.0
+4

'SmtpClient.EnableSsl = true;'? –

Trả lời

52

TLS (Bảo mật mức truyền tải) là thuật ngữ rộng hơn một chút đã thay thế SSL (Lớp cổng bảo mật) trong việc bảo mật liên lạc HTTP. Vì vậy, những gì bạn đang được yêu cầu làm là kích hoạt SSL.

+5

Cảm ơn! Điều đó thật ngu ngốc! – Joshua

+1

Ai đó có cùng sự cố ở đây: http://bytes.com/topic/net/answers/671675-smtpclient-enablessl-using-tls –

+3

Không phải mọi máy chủ SMTP đều hỗ trợ cả TSL và SSL. – cgalvao1993

22

Trên SmtpClient có thuộc tính EnableSsl mà bạn sẽ đặt.

ví dụ:

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

Tôi thích bài đăng này vì tôi nghĩ đó là một câu trả lời hay, nhưng tôi vẫn có chút lo ngại. Nếu chúng tôi đặt EnableSSL thành true, nó sẽ * đảm bảo * rằng * tất cả * máy chủ email * giữa * máy chủ email gốc và nhận máy chủ email sử dụng SSL hoặc TLS? Từ sự hiểu biết của tôi, email đôi khi có thể bị trả về * nhiều * máy chủ trước khi nó đến đích cuối cùng của nó. –

+3

@ShawnEary Không, nó không. Nó chỉ đơn giản có nghĩa là kết nối giữa máy khách .NET SMTP của bạn và máy chủ SMTP ban đầu là an toàn - đó là nó. Chỉ có bấy nhiêu thôi. Không có điều khoản nào trong SMTP để bảo đảm toàn bộ tuyến đường, một email theo sau, đó là lý do tại sao chúng tôi có S/MIME để mã hóa thư. – Dai

17

Tôi đã gần như sử dụng công nghệ tương tự như bạn đã làm, tuy nhiên tôi đã sử dụng ứng dụng của tôi để kết nối một Exchange Server thông qua Office 365 nền tảng trên WinForms. Tôi cũng đã có cùng một vấn đề như bạn đã làm, nhưng đã có thể thực hiện bằng cách sử dụng mã có sửa đổi nhỏ của những gì người khác đã đưa ra ở trên.

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

Tôi đã phải sử dụng Cổng 587, tất nhiên là cổng mặc định trên TSL và đã thực hiện xác thực.

+0

@hiFl sir, còn cổng mặc định cho SSL, nếu tôi muốn khách hàng smtp chọn SSL chứ không phải TLS? –

+1

465 như [tài liệu nói] (https://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.enablessl(v=vs.110).aspx) – hiFI

Các vấn đề liên quan