【问题标题】:SMTP server requires a secure connection - gmailSMTP 服务器需要安全连接 - gmail
【发布时间】: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 数据中心不同的时区
  • 我已经检查了谷歌设置,并在我启用不太安全的应用程序之前找到了该条目,但是现在(在启用不太安全的应用程序之后)每当我尝试发送它时,我都没有收到任何新警报。

标签: c# asp.net azure gmail


【解决方案1】:

我知道这个答案有点晚了,但您使用的是不安全的方式登录您的 gmail。 Gmail 实际上会引发错误,但这不会发送给您。您可能会收到一封电子邮件,内容如下:

有人试图通过不安全的方式连接到您的 gmail 帐户 应用

或类似的。在这种情况下,您必须访问

https://www.google.com/settings/security/lesssecureapps

(如果您已登录)

并设置此选项以允许不安全的应用程序。比你被允许发送邮件(即使以这种不安全的方式)。

遇到同样的问题,但我不想允许不安全的应用程序,我想更改我的代码以确保安全。但找不到任何解决此问题的方法。

【讨论】:

    【解决方案2】:

    尝试删除 UseDefaultCredentials 属性。

    如果这不起作用,请单独设置属性(不使用对象初始化程序)并确保在 UseDefaultCredentials 之后设置 Credentials

    c# SmtpClient class not able to send email using gmail

    【讨论】:

    • 不幸的是还是一样的结果
    【解决方案3】:

    您的代码看起来不错。您是否检查过电子邮件地址没有被锁定? IE。在浏览器上实际登录该电子邮件帐户。在我使用的 gmail 帐户被锁定之前,它发生在我身上。

    【讨论】:

    • 我登录正常。它没有锁定
    猜你喜欢
    • 1970-01-01
    • 2018-04-23
    • 2018-10-09
    • 2023-03-27
    • 2017-12-02
    • 2015-08-27
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多