【问题标题】:The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication RequiredSMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应是:5.5.1 Authentication Required
【发布时间】:2012-05-28 18:03:01
【问题描述】:

我有一个问题,当我通过此代码发送邮件时,会出现错误“SMTP 服务器需要安全连接或客户端未经过身份验证。服务器响应是:5.5.1 需要身份验证。”

我的代码是:

protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{

    MailMessage mail = new MailMessage();
    mail.To.Add("info@msslindia.com");
    mail.From = new MailAddress("info@msslindia.com");
    string body = "<table><tr><td>Company Name:</td><td>" + txt_cname.Text + "</td></tr><tr><td>Address With No.:</td><td>" + txt_addwithno.Text + "</td></tr><tr><td>Contact Person:</td><td>" + txt_conperson.Text + "</td></tr><tr><td>Email Id</td><td>" + txt_email.Text + "</td></tr><tr><td>Description</td><td>" + txt_description.Text + "</td></tr></table>";
    mail.Body = body;
    mail.IsBodyHtml = true;
    SmtpClient smtp = new SmtpClient();
    smtp.Host = "smtp.gmail.com";
    smtp.Port = 25;
    smtp.UseDefaultCredentials = true;
    smtp.Credentials = new System.Net.NetworkCredential("info@msslindia.com", "xyz");
    smtp.EnableSsl = true;
    smtp.Send(mail);


    txt_cname.Focus();
    txt_cname.Text = "";
    txt_addwithno.Text = "";
    txt_conperson.Text = "";
    txt_email.Text = "";
    txt_description.Text = "";

}

【问题讨论】:

标签: c#


【解决方案1】:

Microsoft 声明不推荐使用 SmtpClient。您应该使用 MailKit,它肯定会工作。

https://docs.microsoft.com/en-us/dotnet/api/system.net.mail.smtpclient?view=netframework-4.0

我们不建议您将 SmtpClient 类用于新开发,因为 SmtpClient 不支持许多现代协议。请改用 MailKit 或其他库。有关详细信息,请参阅 SmtpClient 不应在 GitHub 上使用。

【讨论】:

    【解决方案2】:

    我试图通过 SQL Server 2012 数据库邮件进行设置,但收到了相同的消息。

    我无法使用我的主 g-mail 帐户使用它,该帐户使用双重身份验证,即使在使用特定于应用程序的密码之后也是如此。我最终尝试了没有双重身份验证的辅助帐户,并且它立即起作用。因此,对于使用上述解决方案之一无法使其正常工作的任何人,请尝试使用标准身份验证 g-mail 帐户。

    【讨论】:

      【解决方案3】:

      端口并不重要,因为 System.Net.Mail 不支持隐式 SSL,换句话说,它完全忽略了“端口”参数。

      【讨论】:

        【解决方案4】:

        Google 可能会阻止应用程序访问您的帐户
        您可以在此处启用应用程序使用您的凭据访问 google 帐户:

        https://accounts.google.com/DisplayUnlockCaptcha

        【讨论】:

          【解决方案5】:

          试试 587 端口(它对我有用) 并将 UseDefaultCredentials 设置为 false。 设置此项并尝试发送邮件

          【讨论】:

          • ok 删除 UseDefaultCredentials 行后尝试或暂时对其进行评论
          • 你能把你的代码sn-p发给我,让我看看
          • 嘿,我试过你在这里粘贴的代码,它工作得很好。你试图从哪个帐户发送邮件?
          • 其实是在outlook上配置的。
          【解决方案6】:

          我认为你使用了错误的端口。

          你应该使用 465

          http://support.google.com/mail/bin/answer.py?hl=en&answer=13287

          干杯

          【讨论】:

          • 是的,你是对的,25 是通用的 smtp 端口。您可能想使用 465 或 587
          【解决方案7】:

          我认为您应该将 UseDefaultCredentials 设置为 false,因为您定义了连接的凭据。

          当这个 SmtpClient 对象应该时,将此属性设置为 true,如果 由服务器请求,使用默认凭据进行身份验证 当前登录的用户。

          [...]

          如果 UseDefaultCredentials 属性设置为 false,则 该值 在 Credentials 属性中设置的凭据将用于 连接服务器

          【讨论】:

            猜你喜欢
            • 2015-05-01
            • 2015-05-18
            • 2017-02-17
            • 2013-10-31
            • 2014-01-21
            • 2014-11-08
            • 2016-05-16
            相关资源
            最近更新 更多