我正在windows azure上运行ASP.Net应用程序,我需要发送一封电子邮件。我试图使用我的Gmail帐户发送它,如下所示,但是当我尝试发送它时,我收到以下错误:
SMTP服务器需要安全连接,否则客户端不需要 认证。服务器响应为:5.5.1需要身份验证。
了解更多信息
代码:
private static readonly string EMAIL_ADDRESS = "mymail@gmail.com";
private static readonly string EMAIL_FROM = "MY FROM NAME";
private static readonly string EMAIL_PASS = "my Password";
private static readonly string EMAIL_HOST = "smtp.gmail.com";
private static readonly int EMAIL_PORT = 587;
private static readonly bool EMAIL_SSL = true;
private static readonly SmtpDeliveryMethod EMAIL_DELIVERY_METHOD = SmtpDeliveryMethod.Network;
private static readonly bool EMAIL_DEFAULT_CREDENTIALS = false;
public static void SendEmail(string recipientEmail, string subject, string body) {
var fromAddress = new MailAddress(EMAIL_ADDRESS, EMAIL_FROM);
var toAddress = new MailAddress(recipientEmail, "MY CLIENT NAME");
var smtp = new SmtpClient {
Host = EMAIL_HOST,
Port = EMAIL_PORT,
EnableSsl = EMAIL_SSL,
DeliveryMethod = EMAIL_DELIVERY_METHOD,
UseDefaultCredentials = EMAIL_DEFAULT_CREDENTIALS,
Credentials = new NetworkCredential(fromAddress.Address, EMAIL_PASS,EMAIL_HOST)
};
using (var message = new MailMessage(fromAddress, toAddress) {
Subject = subject,
Body = body,
Priority = MailPriority.High
}) {
smtp.Send(message);
}
}
我已启用Less Secure Sign-in,配置似乎没问题。有什么问题?
答案 0 :(得分:1)
尝试删除UseDefaultCredentials属性。
如果这不起作用,请单独设置属性(不使用对象初始化程序),并确保在UseDefaultCredentials
之后设置凭据答案 1 :(得分:0)
您的代码看起来很好。您是否检查过电子邮件地址是否已被锁定?即实际上是在浏览器上登录该电子邮件帐户。在我使用的Gmail帐户被锁定之前,它发生在我身上。
答案 2 :(得分:0)
我知道这个问题有点迟了,但您使用的是一种不安全的方式来登录您的Gmail。 Gmail实际上会抛出错误,但这不会发送给您。您可能会收到一封类似以下内容的电子邮件:
有人试图从不安全的方式连接到你的Gmail帐户 应用
或者类似的。在这种情况下,您必须访问
https://www.google.com/settings/security/lesssecureapps
(如果您已登录)
并设置此选项以允许不安全的应用。比你被允许发送邮件(即使是以这种不安全的方式)。
遇到同样的问题atm但我不想允许不安全的应用程序,我想改变我的代码是安全的。但是找不到任何可以解决这个问题的东西。