【问题标题】:5.7.0 Must issue a STARTTLS command first5.7.0 必须先发出 STARTTLS 命令
【发布时间】:2015-04-24 05:14:00
【问题描述】:

我正在尝试通过 C# 发送电子邮件。虽然我相信我做的一切都是正确的,但它仍然会抛出这个异常:

“SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.5.1 需要身份验证。了解更多信息,请访问”

起初我以为这可能是区域/IP/区域问题...但是当我登录 gmail 时,没有任何警告。可以肯定的是,我已将文件上传到网站以从那里进行检查,但仍然引发了错误。

比我尝试将端口更改为 465。它也不起作用。

我首先尝试使用由 Google Apps 帐户管理的帐户。所以我认为它可能是它,但它不是......

我现在真的没有想法。

你们有什么想法吗?

这里是示例代码:

   SmtpClient sm = new SmtpClient("smtp.gmail.com",587);

        sm.Credentials = new NetworkCredential("blabla@gmail.com","**");
        sm.UseDefaultCredentials = false;
        sm.EnableSsl = true;
        sm.DeliveryMethod = SmtpDeliveryMethod.Network;
        sm.Send("blabla@gmail.com","blabla2@tr3reklam.com","Test","Test");

** 注意 ** 我已经检查了帐户名和密码,它们都是正确的。

【问题讨论】:

  • 进行谷歌搜索,那里有很多工作示例。stackoverflow.com/questions/27870353/… 似乎您缺少一些东西,也将该代码包装在 try{}catch{} 中,并且您没有构建第一眼就能正确传达信息
  • 对不起!我忘了提,但是是的,我已经检查过了
  • 相信我,我已经搜索过了...我用 3 个不同的帐户尝试过这个,没有 2 步版本。在其中任何一个上,使用 Google Apps 时都不能有“不太安全的应用程序”设置,我使用了 587 和 465 端口,尝试了不同的设置,例如“UseDefaultCredentials=true”或“EnableSsl=false”.. . 这些都不起作用。我也在 try-catch 块中使用这个块。
  • 是您的电子邮件帐户..?通过登录手动检查它,看看你是否可以进入.. 如果不能,那么该帐户可能因过多的错误尝试而被锁定。你看链接了吗..也许你应该尝试一些工作示例链接在我最初的评论中..
  • 是的,它们都是我的。我可以手动登录所有。没有堵塞。

标签: c# ssl smtp gmail smtpclient


【解决方案1】:

必须为 NetworkCredential 使用 Google's settings page 的 Gmail 帐户启用“访问不太安全的应用程序”。

【讨论】:

  • @mikeTheLiar:链接不是文档。这是您设置该选项的实际位置。因此,“仅链接”是完全错误的;答案包含任何答案所能提供的一切。
【解决方案2】:

毕竟是两步验证造成的!

这很奇怪,但是如果没有将“允许用户能够打开两步验证”选项设置为 true,我就无法发送任何邮件。

帐户的两步验证仍处于关闭状态,但可能允许用户自己选择在后台进行一些安全设置。

我找不到任何有关此的文档,但我现在可以发送...

【讨论】:

    【解决方案3】:

    把代码 sm.UseDefaultCredentials = false;之前 sm.Credentials = ...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-04
      • 2016-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-13
      • 1970-01-01
      相关资源
      最近更新 更多