【问题标题】:Cannot use Gmail smtp from Azure Cloud Service无法从 Azure 云服务使用 Gmail smtp
【发布时间】:2012-06-16 14:36:36
【问题描述】:

我通过 Gmail 的 smtp 发送电子邮件的代码:

SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
client.EnableSsl = true;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("my_user_name", "my_password");

MailMessage message =
     new MailMessage(new MailAddress("from...@gmail.com"), new MailAddress("to...@gmail.com"));
message.Body = "body";
message.Subject = "subject";
client.Send(message);

代码在我的本地机器上运行,当我在 Azure 上作为“网站”发布时。

但是当我在 “云服务” 中发布时,我得到了这个异常:

 System.Net.Mail.SmtpException: The SMTP server requires a secure connection
 or the client was not authenticated. The server response was:
 5.5.1 Authentication Required. Learn more at

Windows Azure“网站”与“云服务”有什么不同会产生这种影响吗?

谢谢!

【问题讨论】:

    标签: .net azure smtp gmail


    【解决方案1】:

    您的连接似乎被 SMTP 服务器拒绝,因为它没有启用 SSL 或凭据不正确。您需要在 web.config 中设置 SSL 和网络凭据,如下所示:

    <system.net>
     <mailSettings>
        <smtp deliveryMethod="Network">
            <network enableSsl="true" host="smtp.gmail.com" port="25" userName="xxxxxxx@gmail.com" password="xxxxxxxxxxx"/>
        </smtp>
     </mailSettings>
    </system.net>
    

    此 SO 讨论中提供了更多信息: C# - Can't send mail in WIndows Azure via Gmail SMTP

    【讨论】:

      【解决方案2】:

      在 Web.config 中使用以下 SMTP 设置:

      <system.net>
          <mailSettings>
              <smtp deliveryMethod="Network">
                  <network defaultCredentials="false" enableSsl="true" host="smtp.gmail.com" port="587" userName="xxxxxxx@gmail.com" password="xxxxxxxxxxx"/>
              </smtp>
          </mailSettings>
      </system.net>
      

      我认为您传递了错误的凭据。在您的用户名中使用 @gmail.com 后缀并尝试将 bodyhtml 属性也设置为 true...

      希望这对你有用..它总是对我正常工作..

      查看this SO thread中的答案评论。

      【讨论】:

      • 宾果游戏!使用 @gmail.com 为用户名添加后缀在“云服务”应用程序中起到了作用。
      • 实际上 gmail 将完整的电子邮件 ID 作为用户名,您可以在 Outlook 或任何客户端中配置它。
      • 可能是的,但是在 cassini 和 Azure 中没有 @gmail.com 作为“网站”时它可以工作。也许我在那里很幸运:)
      【解决方案3】:

      如前所述,您的用户名应包含“@googlemail.com”。在我的代码 (java) 中,我使用 port 465 通过谷歌邮件发送邮件。

      【讨论】:

        【解决方案4】:

        我遇到了这个确切的问题。但是,无论我使用&lt;system.net&gt; 配置设置并且使用正确的凭据、主机、端口等,我都遇到了这个问题。

        问题在于 Google 拒绝了来自 Azure 的身份验证请求。我通过登录我在代码中用于 SMTP 客户端的 Gmail 帐户发现了这一点。登录 Gmail 帐户后,我注意到一个 red-bar-header-warning,上面写着

        有人从您的帐户不常见的位置登录。 如果不是您,请立即更改您的密码。

        除了警告之外,我还收到一封电子邮件,内容是:

        最近有人尝试使用应用程序登录您的 Google 帐户,xxxx@gmail.com。我们阻止了登录尝试以防万一 这是一个试图访问您的帐户的劫机者。请查看 登录尝试的详细信息:

        • 格林威治标准时间 2012 年 8 月 27 日星期一晚上 10:33:59
        • IP地址:168.62.48.183
        • 地点:美国

        如果您无法识别此登录尝试,则可能是其他人 试图访问您的帐户。您应该登录您的帐户并 立即重置您的密码。了解如何在 http://support.google.com/accounts?p=reset_pw

        如果这是您,并且您想授予此应用程序访问您的 帐户,请完成以下所列的故障排除步骤 http://support.google.com/mail?p=client_login

        此致 Google 客户团队敬上

        按照提供的链接中列出的步骤操作后,我的 Azure 网站能够成功登录到我的 Gmail 帐户并将 Gmail 用作 SMTP 客户端。

        【讨论】:

        • 仅供参考 - 您需要登录到您的代码中使用的 gmail 帐户。我收到了关联帐户的“可疑活动”电子邮件,但无法授权该 IP 地址。
        • 你的传奇!我不得不再次使用我的 gmail 帐户登录,将可疑登录标记为合法并转到 google.com/accounts/DisplayUnlockCaptcha。这样就解决了。
        • 你是救生员,谢谢!我已经把头发拉出来几个小时了。哎呀!
        【解决方案5】:

        按照 Google 故障排除页面上的说明,转到以下链接并从我的本地计算机登录修复了从 Azure 网站为我发送电子邮件时出现的错误。

        http://www.google.com/accounts/DisplayUnlockCaptcha

        【讨论】:

          【解决方案6】:

          在 Gmail 帐户中创建“应用密码”

          转到您的Gmail account

          安全部分

          1.- 转到 Google 访问权限

          2.- 允许两步验证

          3.- 创建一个新的应用密码

          4.- 在您的 Web.config 或源代码中正常使用该密码

          【讨论】:

            猜你喜欢
            • 2018-10-08
            • 2019-08-14
            • 1970-01-01
            • 1970-01-01
            • 2012-05-06
            • 2012-10-20
            • 1970-01-01
            • 1970-01-01
            • 2013-02-15
            相关资源
            最近更新 更多