c# – 发送电子邮件时System.Net.Mail.SmtpClient使用什么类型的身份验证?

希望这个问题有道理.我有一些C#代码,它们根据用户名,密码和域发送电子邮件.我如何知道它使用的身份验证类型?

当我查看SmtpClient.Credentials属性的MSDN页面时,它表示如果使用基本身份验证,则凭据将以纯文本形式发送.以下代码是否使用基本身份验证? MSDN page:https://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.credentials(v=vs.110).aspx

SmtpClient smtpClient = new SmtpClient();
NetworkCredential cred = new NetworkCredential("username", "password"); 
MailMessage message = new MailMessage(); 
MailAddress fromEmail = new MailAddress("from@yourdomain.com"); 

smtpClient.Host = "mail.mydomain.com";
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = cred;

message.From = fromEmail;
message.Subject = "my subject";

message.IsBodyHtml = true;
message.Body = "hello world!";
message.To.Add("toEmail@anything.com"); 

smtpClient.Send(message);

最佳答案 通常,SmtpClient将始终选择“最佳”可用的身份验证方法(SMTP服务器将在EHLO命令的答案中告知).因此,如果不知道服务器实际支持什么,我们就无法真正回答.

SmtpClient可以选择以下方法:Negotiate,NTLM,Digest和Login

这里有一些有趣的读物,关于如何强制SmtpClient使用特定的身份验证方法(稍微有些hack-ish btw.):http://blogs.msdn.com/b/knom/archive/2008/04/16/hacking-system-net-mail-smtpclient.aspx

点赞