Nasza firma przełącza serwer pocztowy SMTP na Office 365. Kluczową kwestią jest to, że nowy serwer SMTP "smtp.office365.com" obsługuje tylko szyfrowanie TLS. Dlatego nie mogę użyć CredentialCache.DefaultNetworkCredentials
do automatycznego zakodowania mojego hasła logowania do systemu Windows.Użyj DefaultNetworkCredential w szyfrowaniu 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");
Poprzednio to działa bez żadnego problemu. Ale jeśli teraz zmienić powyższy fragment do:
var smtpClient = new SmtpClient("smtp.office365.com");
smtpClient.EnableSsl = true;
smtpClient.Port = 587;
smtpClient.Credentials = CredentialCache.DefaultNetworkCredentials;
Jestem teraz coraz:
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
ale jeśli mogę określić moje logowania użytkownika i hasło systemu Windows w kodzie to działa dobrze:
smtpClient.Credentials = new NetworkCredential("[email protected]", "mypassword");
Więc:
- Czy to możliwe, w celu zakodowania hasło przy użyciu
DefaultNetworkCredentials
, ale sprawiają, że działa pod szyfrowanie TLS? - Jeśli 1. nie jest możliwe, czy istnieje lepszy sposób zakodowania mojego hasła do systemu Windows w innym miejscu bez bezpośredniego ujawnienia go jako zwykłego tekstu w kodzie?