需要 SMTP 身份验证 [重复]
Posted
技术标签:
【中文标题】需要 SMTP 身份验证 [重复]【英文标题】:Smtp authentification required [duplicate] 【发布时间】:2016-01-09 16:23:33 【问题描述】:我有一个 asp.net mvc 应用程序,我想发送一封电子邮件:
MailMessage mailMessage = new MailMessage();
var smtpClient = new SmtpClient();
smtpClient.Host = "smtp.gmail.com";
smtpClient.Port = 587;
smtpClient.EnableSsl = true;
smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtpClient.Credentials = new NetworkCredential("myemail@gmail.com", "password");
smtpClient.Timeout = 20000;
mailMessage.To.Add(model.Email);
mailMessage.From = new MailAddress("support@team.com");
mailMessage.Subject = "Modification de mot de passe";
mailMessage.Body = "Vous avez modifié votre mot de passe de votre Compte ";
mailMessage.Body += Environment.NewLine;
mailMessage.Body += "le nouveau mot de passe est : ";
mailMessage.Body += newPassword;
smtpClient.Send(mailMessage);
我得到了这个例外:
服务器响应:5.5.1 需要身份验证。
在最后一行代码中。
我需要知道这个问题的原因是什么?我该如何解决?
【问题讨论】:
因为这只是一个身份验证问题。 @Coulton 这也是一个代码问题,因为他没有将UseDefaultCredentials
设置为 false。
@user1666620 确实,如重复问题中所述
这是一个简单的问题,如果他会使用搜索功能就不会存在
【参考方案1】:
你需要告诉 SMTP 客户端你不会使用你的 windows 凭据来访问 SMTP,所以添加
smtpClient.UseDefaultCredentials = false;
以上这行代码
smtpClient.Credentials = new NetworkCredential("myemail@gmail.com", "password");
另外,gmail 不允许冒充,所以
mailMessage.From = new MailAddress("support@team.com");
不会有任何效果 - 电子邮件仍会显示为从您正在访问的电子邮件帐户发送。
此外,请确保在您的 gmail 帐户上设置了“允许安全性较低的应用程序”设置,并且未启用 2 因素身份验证。
【讨论】:
【参考方案2】:您的帐户是否启用了 SSL?
根据您的 Gmail 帐户设置,您的应用中可能会出现身份验证错误。如果您的 Gmail 帐户使用两步验证,您应该生成一个应用程序密码以用于您的 mailer_password 参数。您还应确保允许安全性较低的应用访问您的 Gmail 帐户。
【讨论】:
以上是关于需要 SMTP 身份验证 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.5.1 需要身份验证。 [复制]
asp.net SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应是:5.5.1 Authentication Required [重复]