我正在尝试连接到需要身份验证的smtp服务器。
这是我用来发送电子邮件的C#代码:
var smtpClient = new SmtpClient();
smtpClient.Host = _smtpServerHost;
smtpClient.Credentials = new NetworkCredential(_username, _password);
smtpClient.UseDefaultCredentials = false;
smtpClient.Send(GetMessage());
send函数引发了错误:
The SMTP server requires a secure connection or the client was not authenticated.
The server response was: Must authenticate before sending mail
我是否缺少连接到smtp服务器的步骤?
我尝试连接到我们运行的测试服务器但是没有用。我还尝试连接到smtp4dev。当我不需要身份验证时,我可以连接到它,但是当我需要身份验证时,我可以连接到它。
答案 0 :(得分:5)
事实证明,您需要先设置UseDefaultCredentials = false
,然后再分配client.Credentials
。如果在它不发送AUTH命令后进行设置。
答案 1 :(得分:0)
Microsoft声明不建议使用SmtpClient。您应该使用MailKit。 https://docs.microsoft.com/en-us/dotnet/api/system.net.mail.smtpclient?view=netframework-4.0
我们不建议您将SmtpClient类用于新开发,因为SmtpClient不支持许多现代协议。请改用MailKit或其他库。有关更多信息,请参阅不应在GitHub上使用SmtpClient。