【问题标题】:Error with gmail smtp in asp.netasp.net 中的 gmail smtp 错误
【发布时间】:2015-12-31 16:29:54
【问题描述】:

正如标题所说,我在通过代码向 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. 

【问题讨论】:

    标签: c# asp.net email smtp gmail


    【解决方案1】:

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

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

    在您的 Gmail 安全选项卡上,将“允许不太安全的应用程序”设置为 true。

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

    如果失败,请尝试更改密码,因为有时谷歌会更新他们的密码政策,如果密码被认为未通过政策,登录将被阻止。 (来源https://stackoverflow.com/a/4931560/1666620

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

    【讨论】:

    • @oOMelon 出于好奇,我的回答中的哪一部分解决了您的问题?
    • 我刚刚放错了这两行。 :)
    猜你喜欢
    • 2010-12-04
    • 2011-05-05
    • 2018-05-17
    • 2012-11-08
    • 2019-01-20
    • 2012-10-18
    • 2017-10-15
    • 2011-05-18
    • 1970-01-01
    相关资源
    最近更新 更多