【问题标题】:Email error while sending mail from C# code从 C# 代码发送邮件时出现电子邮件错误
【发布时间】:2017-08-13 12:30:32
【问题描述】:

我收到以下错误

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

如何解决这个问题?我的代码:

MailMessage mail = new MailMessage();
mail.From = new MailAddress(FromAddress);
mail.To.Add(email);
mail.Subject = "Forgot Password";
mail.Body = SendMessage;
mail.IsBodyHtml = true;
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
SmtpServer.Port = 587;
SmtpServer.DeliveryMethod = SmtpDeliveryMethod.Network;
NetworkCredential myCreds = new NetworkCredential(EmailUsername, EmailPassword);
SmtpServer.Credentials = myCreds;
SmtpServer.EnableSsl = true;
SmtpServer.UseDefaultCredentials = true;
SmtpServer.Send(mail);

Webconfig如下

<add key="FromAddress" value="xxxxxxx@gmail.com"/>
<add key="EmailUsername" value="xxxxxxx@gmail.com"/>
<add key="EmailPassword" value="Josco@321"/>

如下更改了我的电子邮件设置。

FromAddress 和 EmailUsername 是相同的电子邮件。

【问题讨论】:

  • 与您的问题没有直接关系,但 MailMessage 和 SmtpClient 都实现了 IDisposable,特别是在 SmtpClient 的情况下,如果您不处置,实际上可能会耗尽资源。
  • 请务必更改问题中显示的密码 ;-)

标签: asp.net asp.net-mvc


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-24
    • 2018-05-30
    • 1970-01-01
    • 2014-06-07
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    相关资源
    最近更新 更多