15

我通过 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“网站”与“云服务”有什么不同会产生这种效果吗?

谢谢!

4

6 回答 6

14

我遇到了这个确切的问题。但是,无论我使用的是<system.net>配置设置还是使用了正确的凭据、主机、端口等,我都遇到了这个问题。

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

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

除了警告之外,我还收到一封电子邮件,上面写着:

最近有人尝试使用应用程序登录您的 Google 帐户 xxxxx@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 客户端。

于 2012-08-27T23:37:16.563 回答
8

在 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 ......

希望这对你有用..它对我来说总是正确的..

在这个 SO 线程中检查答案的评论。

于 2012-06-13T17:17:14.457 回答
8

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

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

于 2016-06-14T11:03:29.033 回答
4

似乎您的连接被 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

于 2012-06-13T16:56:59.750 回答
0

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

于 2012-06-13T17:24:22.227 回答
0

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

转到您的Gmail 帐户

安全部分

1.- 去谷歌访问

2.- 允许两步验证

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

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

于 2021-04-06T19:51:12.233 回答