希望这个问题有意义。我有一些 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)
通常SmtpClient
将始终选择“最佳”可用身份验证方法(SMTP 服务器将在命令的答复中告知EHLO
)。因此,如果不知道服务器实际支持什么,我们就无法真正回答。
SmtpClient
可以选择以下方法:协商、NTLM、摘要和登录
这里有一些关于如何强制SmtpClient
使用特定身份验证方法的有趣阅读(顺便说一句,有点黑客风格。):http://blogs.msdn.com/b/knom/archive/2008/04/16/hacking-system-net -邮件-smtpclient.aspx