首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SMTP服务器需要安全连接,或者客户端未经过身份验证。服务器响应是: 5.5.1是否需要身份验证?

SMTP服务器需要安全连接,或者客户端未经过身份验证。服务器响应是: 5.5.1是否需要身份验证?
EN

Stack Overflow用户
提问于 2013-08-29 14:00:45
回答 26查看 498.4K关注 0票数 139

我想从我的应用程序中发送一封电子邮件,我已经编写了以下代码来发送邮件

代码语言:javascript
复制
    MailMessage msg = new MailMessage();

    msg.From = new MailAddress("mymailid");
    msg.To.Add("receipientid");
    msg.Subject = "test";
    msg.Body = "Test Content";
    msg.Priority = MailPriority.High;

    SmtpClient client = new SmtpClient();

    client.Credentials = new NetworkCredential("mymailid", "mypassword", "smtp.gmail.com");
    client.Host = "smtp.gmail.com";
    client.Port = 587;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.EnableSsl = true;
    client.UseDefaultCredentials = true;

    client.Send(msg);

我在本地主机上运行它,所以我发送它是什么错误。

当我点击send按钮时,它会给出一个错误,比如

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

Web.config文件中的代码

代码语言:javascript
复制
 <appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />   
    <add key="smtpServer" value="smtp.gmail.com" />
    <add key="EnableSsl" value = "true"/>
    <add key="smtpPort" value="587" />
    <add key="smtpUser" value="sender@gmail.com" />
    <add key="smtpPass" value="mypassword" />
    <add key="adminEmail" value="sender@gmail.com" />
  </appSettings>
  <system.net>
    <mailSettings>
      <smtp from="sender@gmail.com">
        <network host="smtp.gmail.com" password="mypassword" port="587" userName="sender@gmail.com"  enableSsl="true"/>
      </smtp>
    </mailSettings>
  </system.net>

如何解决此错误并发送邮件??

EN

回答 26

Stack Overflow用户

回答已采纳

发布于 2013-08-29 14:16:31

首先检查gmail的安全相关问题。您可能已经在gmail中启用了双重身份验证。如果你收到任何安全警报,也要检查你的gmail收件箱。在这种情况下,请检查@mjb的其他答案,如下所示

下面是我总是首先检查这类问题的非常一般的事情

代码语言:javascript
复制
client.UseDefaultCredentials = true;

将其设置为false。

注意@Joe King's answer -您必须在设置client.Credentials之前设置client.UseDefaultCredentials

票数 82
EN

Stack Overflow用户

发布于 2015-01-12 15:12:07

确保在调用SmtpClient.UseDefaultCredentials = false之后设置SmtpClient.Credentials

顺序很重要,因为设置SmtpClient.UseDefaultCredentials = false会将SmtpClient.Credentials重置为null。

票数 52
EN

Stack Overflow用户

发布于 2016-06-25 10:32:53

我已经搜索并尝试了几个小时不同的东西..总而言之,我必须考虑以下几点:

Access for less secure apps

  • Set client.EnableSsl = true;

上设置credentials

  • Turn之前,
  1. 使用smtp.gmail.com代替smtp.google.com
  2. Use端口587
  3. Set client.UseDefaultCredentials = false;

如果这些步骤没有帮助,请检查此answer

也许,你也可以在这个System.Net.Mail FAQ上找到一些有用的东西。

票数 46
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18503333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档