Công ty chúng tôi đang chuyển đổi máy chủ thư SMTP thành Office 365. Vấn đề chính là máy chủ SMTP mới "smtp.office365.com" chỉ hỗ trợ mã hóa TLS. Vì vậy, tôi không thể sử dụng CredentialCache.DefaultNetworkCredentials
để tự động mã hóa mật khẩu đăng nhập Windows của mình.Sử dụng DefaultNetworkCredential trong mã hóa TLS?
var smtpClient = new SmtpClient("smtp.oldserver.com")
{
Credentials = CredentialCache.DefaultNetworkCredentials
};
const string from = "[email protected]";
const string recipients = "[email protected]";
smtpClient.Send(from, recipients, "Test Subject", "Test Body");
Trước đây, tác phẩm này không có bất kỳ vấn đề nào. Nhưng nếu bây giờ tôi thay đổi đoạn trên để:
var smtpClient = new SmtpClient("smtp.office365.com");
smtpClient.EnableSsl = true;
smtpClient.Port = 587;
smtpClient.Credentials = CredentialCache.DefaultNetworkCredentials;
Tôi bây giờ nhận được:
Unhandled Exception: System.Net.Mail.SmtpException: The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM
Nhưng nếu tôi chỉ định tên đăng nhập Windows của tôi và mật khẩu trong mã nó hoạt động tốt:
smtpClient.Credentials = new NetworkCredential("[email protected]", "mypassword");
Vì vậy:
- có thể mã hóa mật khẩu bằng cách sử dụng
DefaultNetworkCredentials
nhưng làm cho nó khả thi dưới mã hóa TLS? - Nếu không thể, có cách nào tốt hơn để mã hóa mật khẩu Windows của tôi ở một nơi khác mà không trực tiếp tiết lộ nó dưới dạng văn bản thô trong mã không?