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

And*_*y 1 5 .net c# email

希望这个问题有意义。我有一些 C# 代码,可以根据给定的用户名、密码和域发送电子邮件。我如何知道它使用什么类型的身份验证?

当我查看 SmtpClient.Credentials 属性的 MSDN 页面时,它说如果您使用基本身份验证,则凭据将以纯文本形式发送。下面的代码是否使用基本身份验证?MSDN 页面: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);
Run Code Online (Sandbox Code Playgroud)

pys*_*o68 2

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

SmtpClient可以选择以下方法:协商、NTLM、摘要和登录

这里有一些关于如何强制SmtpClient使用特定身份验证方法的有趣阅读(顺便说一句,有点黑客风格。):http://blogs.msdn.com/b/knom/archive/2008/04/16/hacking-system-net -邮件-smtpclient.aspx