无法连接到需要身份验证的smtp服务器

时间:2010-11-10 19:29:46

标签: c# .net smtp

我正在尝试连接到需要身份验证的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。当我不需要身份验证时,我可以连接到它,但是当我需要身份验证时,我可以连接到它。

2 个答案:

答案 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。