【问题标题】:SMTP email client is throwing errors "Timeout" or "requires secure connection" even with correct credential即使使用正确的凭据,SMTP 电子邮件客户端也会抛出错误“超时”或“需要安全连接”
【发布时间】:2014-12-12 06:25:36
【问题描述】:

我是 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,然后我的应用程序总是抛出超时异常。所以我决定尝试使用带有“587”端口的谷歌服务器“smtp.gmail.com”,现在它引发了不同的异常消息:

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

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

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

我也读过这个问题,但我直接在我的机器上测试 - 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
}

【问题讨论】:

  • 你试过添加 smtp.UseDefaultCredentials = false;当您分配凭据对象时?
  • 感谢@NinjaMid76 的评论。我添加了该语句,但它给出了 'SMTP 身份验证错误异常

标签: c# email smtp smtpclient


【解决方案1】:

我刚刚测试了你的代码,它工作正常,你只需要修改这部分:

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

这必须是有效的 gmail 或 google 应用电子邮件以及 smtp 连接正常工作的密码。我建议您自己输入以进行测试,然后将其修改为也包含您的电子邮件:

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

只是为了让您可以验证您的消息是从您的函数传递的。

【讨论】:

  • 我确实输入了自己的 id 和密码,并在这里使用了一个虚拟的,只是为了进行审查,不,它不起作用。我犯了同样的错误。如我的问题所示,它会询问“需要身份验证”。
  • 您是否尝试过在 google 网站上登录您的帐户以确保您的帐户仍然有效?也许它已被锁定,或者您的密码已过期?
  • 是的,我做到了。它没有被锁定,密码仍然有效。
  • 我发现了另一个可以解决这个问题的问题是link
  • 我从该链接中阅读了答案。我对生产服务器一无所知,你能帮我吗?另一件事是这段代码在我的大学实验室中工作。对不起,我这么晚才回复。
猜你喜欢
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 2014-04-08
  • 2015-05-11
  • 2014-10-30
  • 1970-01-01
  • 2021-04-12
  • 1970-01-01
相关资源
最近更新 更多