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

时间:2012-12-08 02:18:50

标签: c# smtp smtpclient

我正在尝试使用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服务器需要安全连接,或者客户端未经过身份验证。服务器响应是:需要SMTP身份验证。

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

  

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

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

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

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

3 个答案:

答案 0 :(得分:8)

我认为你必须设置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);
}

答案 1 :(得分:7)

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

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

答案 2 :(得分:2)

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

你应该检查'打开' the following link relevant to your gmail account中的单选按钮。它会正常工作。