System.Net.Mail.SmtpException:SMTP服务器需要安全连接或客户端未经过身份validation

我正在尝试从C#应用程序发送带有我网站地址的电子邮件。
直到最近,这种情况还好几个月。 (也许我的提供者改变了一些事情或其他人改变了设置)

这是代码:

private void sendEmail(Email invite) { MailMessage mail = new MailMessage(); SmtpClient SmtpServer = new SmtpClient(smtpServerName); mail.From = new MailAddress(emailUsername); mail.To.Add(invite.RecipientEmail); mail.Subject = invite.MessageSubject; mail.Body = invite.MessageBody; SmtpServer.UseDefaultCredentials = false; SmtpServer.Port = 587; SmtpServer.Credentials = new System.Net.NetworkCredential(emailUsername, emailPassword); // SmtpServer.EnableSsl = true; SmtpServer.Send(mail); } 

这是错误:

SMTP服务器需要安全连接或客户端未经过身份validation。 服务器响应是:需要SMTP身份validation。

看看其他问题,我尝试了他们的建议,使SmtpServer.EnableSsl = true 。 这根本不起作用。 它给出了以下内容:

System.Net.Mail.SmtpException:服务器不支持安全连接。

我猜我应该禁用SSL并按原样使用它。

有关如何重新发送电子邮件的建议吗?

编辑
我试过没有SmtpServer.UseDefaultCredentials = false;
我试过将它设置为true: SmtpServer.UseDefaultCredentials =true;
我已经尝试评论该行以及以下//SmtpServer.Credentials = new System.Net.NetworkCredential(emailUsername, emailPassword);

该错误消息通常由以下之一引起:

  • 连接设置不正确,例如为安全或非安全连接指定的错误端口
  • 凭据不正确。 我会validation用户名和密码组合,以确保凭据正确。

我认为你必须设置DeliveryMethod = SmtpDeliveryMethod.Network

这个目前正在我的电脑上工作,我检查过,工作得很好,试试这个

 using System.Net; using System.Net.Mail; var fromAddress = new MailAddress("from@gmail.com", "From Name"); var toAddress = new MailAddress("to@example.com", "To Name"); const string fromPassword = "fromPassword"; const string subject = "Subject"; const string body = "Body"; var smtp = new SmtpClient { Host = "smtp.gmail.com", Port = 587, EnableSsl = true, DeliveryMethod = SmtpDeliveryMethod.Network, UseDefaultCredentials = false, Credentials = new NetworkCredential(fromAddress.Address, fromPassword) }; using (var message = new MailMessage(fromAddress, toAddress) { Subject = subject, Body = body }) { smtp.Send(message); } 

如果您确定自己的用户名和密码正确无误,但仍然出现错误,则表示Gmail已阻止您的应用。

您应该在与您的Gmail帐户相关的以下链接中选中“打开”单选按钮。 然后它会正常工作。