SMTP电子邮件客户端正在抛出错误"超时"或者"要求安全连接"即使有正确的凭证

时间:2014-10-16 19:04:12

标签: c# email smtp smtpclient

我是C#中SMTP客户端的新手。所以我决定用我的凭证进行测试。我构建了一个ASP.NET Web表单应用程序,该应用程序有一个“联系我”页面,我试图向任何填写表单的人发送电子邮件。

在完成本文后,我尝试了示例代码 - https://www.c-sharpcorner.com/UploadFile/87b416/sending-a-simple-email-using-smtpclient-in-C-Sharp/

我在雅虎有一个帐户,因此我使用了其SMTP域" smtp.mail.yahoo.com"端口号:465,然后我的应用程序总是抛出超时异常。所以我决定尝试使用Google的服务器" smtp.gmail.com"用" 587"端口,现在它通过消息引发了不同的异常:

  

SMTP服务器需要安全连接,或者客户端未经过身份验证。服务器响应为:5.5.1需要身份验证

我不明白在Google和Yahoo等安全服务器上使用SMTP的先决条件是什么。请有人解释一下。

另请注意,我没有为我的Google帐户启用两步验证,只是为了清楚说明,因为有些问题已提到这可能是问题。

我也读过这个问题,但我正在我的机器上直接测试 - Gmail Error :The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required

如果有帮助,这里是示例代码:

try
{
    MailMessage m = new MailMessage();

    m.From = new MailAddress("dummy123@gmail.com");
    m.To.Add(new MailAddress("dummyreceiver123@gmail.com"));
    m.Subject = TBSub.Text;
    m.Body = TBBody.Text;
    m.IsBodyHtml = true;

    NetworkCredential nc = new NetworkCredential();
    nc.UserName = "dummy123"
    nc.Password = "dummy@123";

    SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
    smtp.Credentials = nc;
    smtp.EnableSsl = true;
    smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
    smtp.Send(m);
}
catch (Exception ex)
{
    //Log this error
}

1 个答案:

答案 0 :(得分:0)

我刚刚测试了你的代码它工作得很好,你只需要修改这一部分:

nc.UserName = "test"
nc.Password = "password";

这必须是有效的Gmail或谷歌应用程序电子邮件以及smtp连接的密码才能正常工作。我建议你自己进行测试,然后修改它以获得你的电子邮件:

m.From = new MailAddress("yourEmail@gmail.com");
m.To.Add(new MailAddress("yourEmail@gmail.com"));

这样您就可以验证您的消息是从您的函数传递的。