【发布时间】:2015-06-18 01:27:30
【问题描述】:
我在 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);
}
}
我启用了较不安全的登录,配置似乎没问题。有什么问题?
【问题讨论】:
-
尝试将 networkcredentials 的第三个参数留空,并可能查看 sendgrid 或类似的与 azure 一起使用
-
我试过不带第三个参数,结果一样。如果可能的话,我宁愿坚持这一点。从我所看到的情况来看,这应该有效。
-
可能与此重复:stackoverflow.com/questions/20906077/… 如果您位于与 Azure 数据中心不同的时区
-
我已经检查了谷歌设置,并在我启用不太安全的应用程序之前找到了该条目,但是现在(在启用不太安全的应用程序之后)每当我尝试发送它时,我都没有收到任何新警报。