asp.net 中的 gmail smtp 错误

Error with gmail smtp in asp.net

如标题所述,我在通过代码向 gmail 发送电子邮件时遇到问题。

奇怪的是,我在以前的项目中使用过这个确切的代码,当时它可以工作,但现在它在任何项目中都不起作用。

我在下面发布我的代码:

 protected void ButtonSkicka_Click(object sender, EventArgs e)
    {
        try
        {
            MailMessage MailMessage = new MailMessage();
            MailMessage.From = new MailAddress("MyEmail@gmail.com");
            MailMessage.To.Add("MyEmail@gmail.com");
            MailMessage.Subject = TextBoxÄmne.Text;

            MailMessage.Body = "<b>Namn : </b>" + TextBoxNamn.Text + "<br />"
                + "<b> Email : </b>" + TextBoxEmail.Text + "<br />"
                + "<b> Meddelande : </b>" + TextBoxMedd.Text + "<br />";
            MailMessage.IsBodyHtml = true;

            SmtpClient SmtpClient = new SmtpClient("smtp.gmail.com", 587);
            SmtpClient.EnableSsl = true;
            SmtpClient.Credentials = new NetworkCredential("MyEmail@gmail.com", "Password");
            SmtpClient.UseDefaultCredentials = false;
            SmtpClient.Send(MailMessage);

            TextBoxNamn.Text = "";
            TextBoxEmail.Text = "";
            TextBoxÄmne.Text = "";
            TextBoxMedd.Text = "";

            LabelTack.Text = "Tack för ditt meddelande!";


        }

        catch (Exception ex)
        {
            LabelTack.Text = ex.ToString();
        }

我在我的 Gmail 帐户上启用了不太受信任的应用程序并禁用了 2 部分安全性。

这是我收到的错误:

System.Net.Mail.SmtpException: The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required. 

首先,SmtpClient.Credentials应该在UseDefaultCredentials设置为false后声明。

SmtpClient.UseDefaultCredentials = false;
SmtpClient.Credentials = new NetworkCredential("MyEmail@gmail.com", "Password");

在您的 Gmail 安全选项卡上,将 "Allow less secure applications" 设置为 true。

此外,请确保禁用 2 因素身份验证。如果启用,您需要为您的应用程序创建一个应用程序专用密码以允许登录。

如果失败,请尝试更改密码,因为有时 google 会更新他们的密码策略,如果密码被认为不符合策略,则登录将被阻止。 (来源 )

最后,您应该将 SMTPClient 声明包装在 using 语句中,以确保在使用后进行正确处理。