我們公司正在將SMTP郵件服務器切換到Office 365.關鍵問題是新的SMTP服務器「smtp.office365.com」僅支持TLS加密。因此我不能使用CredentialCache.DefaultNetworkCredentials
自動對我的Windows登錄密碼進行編碼。在TLS加密下使用DefaultNetworkCredential?
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");
此前這項工作沒有任何問題。但是,如果我現在改變上面的代碼段:
var smtpClient = new SmtpClient("smtp.office365.com");
smtpClient.EnableSsl = true;
smtpClient.Port = 587;
smtpClient.Credentials = CredentialCache.DefaultNetworkCredentials;
我現在越來越:
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
但是,如果我在指定的代碼我的Windows登錄用戶名和密碼,它工作得很好:
smtpClient.Credentials = new NetworkCredential("[email protected]", "mypassword");
所以:
- 是否有可能編碼使用
DefaultNetworkCredentials
的密碼,但使其在TLS加密下可行? - 如果1.是不可能的,有沒有更好的方法來編碼我的Windows密碼的其他地方,而不是直接在代碼中顯示爲明文?