【问题标题】:Sending email through C# .Net code not working [closed]通过 C# .Net 代码发送电子邮件不起作用[关闭]
【发布时间】:2016-03-17 14:44:21
【问题描述】:

当我使用以下 gmail 帐户之一时,我有一个 C# .Net 代码通过 gmail 发送电子邮件:

        smtp.Host = "smtp.gmail.com";
        smtp.Port = 587;
        smtp.EnableSsl = true;
        smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
        smtp.UseDefaultCredentials = false;
        smtp.Credentials = new NetworkCredential("test@example.com","Test12345");
        smtp.Timeout = 9000;
        smtp.Send(MMsg);

有效的电子邮件是我过去使用的电子邮件,但我们需要将此电子邮件更改为新电子邮件。任何新的电子邮件凭据都不起作用。它给了我错误:

The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required. Learn more at 

Line 120:            smtp.Credentials = new NetworkCredential("test@example.com", "Test12345");
Line 121:            smtp.Timeout = 9000;
Line 122:            smtp.Send(MMsg);

知道我错过了什么吗?如何通过应用程序使其他新电子邮件起作用?

更新: 我必须在谷歌网站https://www.google.com/settings/security/lesssecureapps 上打开“访问不太安全的应用程序”才能使其工作。

【问题讨论】:

  • 您的凭据不正确。仅通过查看您的代码,我就可以看到您没有提供正确的电子邮件帐户
  • 你检查了这个答案吗? stackoverflow.com/a/298379/4995166 试试这个。我认为它会为你工作
  • 错误信息对我来说似乎很不言自明...您的凭据错误。
  • @NguyenHoang 你不会真的期望他提供他的 gmail 登录凭据。显然已经匿名了。

标签: c# asp.net .net


【解决方案1】:

这可能是因为您需要启用不太安全的应用程序。

https://www.google.com/settings/security/lesssecureapps

然后您可以按照以下方式发送电子邮件:

var fromAddress = new MailAddress("myaccount@gmail.com", "My Name");
var toAddress = new MailAddress("test.address@email.com", "Mr Test");
const string fromPassword = "tbhagpfpcxwhkczd";
const string subject = "test";
const string body = "HEY, LISTEN!";

var smtp = new SmtpClient
{
    Host = "smtp.gmail.com",
    Port = 587,
    EnableSsl = true,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    UseDefaultCredentials = false,
    Credentials = new NetworkCredential(fromAddress.Address, fromPassword),
    Timeout = 20000
};

using (var message = new MailMessage(fromAddress, toAddress)
{
    Subject = subject,
    Body = body
})
{
    smtp.Send(message);
}

【讨论】:

  • 你能解释一下为什么你的代码示例比 OP 更好,或者为什么你认为他的不足?
  • 我的答案的核心是启用不太安全的应用程序,因为这就是他收到错误的原因。我的代码并不是特别好,它只是为了进行意义检查。
【解决方案2】:

您的代码看起来不错。

假设您的登录凭据正确,请检查您的 gmail 帐户是否启用了“允许安全性较低的应用”,并检查是否启用了 2 因素身份验证。

如果启用了 2 因素身份验证,您将需要创建一个应用专用密码并将其用于登录凭据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    • 2017-07-19
    相关资源
    最近更新 更多