【问题标题】:smtp error: 535 5.7.8 Username and Password not accepted for gmail in gosmtp 错误:535 5.7.8 Go 中的 gmail 不接受用户名和密码
【发布时间】:2020-09-29 18:41:23
【问题描述】:

我正在尝试使用此功能测试应用程序从本地主机发出的电子邮件:

func SendContactUsForm(subject, email, body string) error {
    var err error
    from := "mysender@gmail.com"
    pass := "somecrazypw"
    to := "mydestination@gmail.com"
    msg := "From: " + from + "\n" +
    "To: " + to + "\n" +
    "Subject: Contact form:" + subject + "\n" + body
    err = smtp.SendMail("smtp.gmail.com:587",
        smtp.PlainAuth("", from, pass, "smtp.gmail.com"),
        from, []string{to}, []byte(msg))
    if err != nil {
        log.Printf("smtp error: %s", err)
        return err
    }
    return nil
}

但我收到此错误:

send_emails.go:171:smtp 错误:535 5.7.8 用户名和密码不正确 公认。了解更多信息 5.7.8 https://support.google.com/mail/?p=BadCredentials a7sm5381413wmh.14 - gsmtp contact.go:38: 错误 seding 联系我们表格 535 5.7.8 用户名和密码不被接受。

尽管mysender@gmail.com 的凭据是正确的,并且我在mysender@gmail.com 上启用了Allow less secure apps。

那么这里有什么问题呢?我该如何解决?

【问题讨论】:

  • 您重新发布了相同的问题并删除了较旧的问题。那么为什么要再次发布同样的问题呢?事实上,它也得到了回答。
  • @DaImTo 你是否暗示不能再使用用户/密码来从应用程序访问 gmail?
  • 不接受用户名和密码。

标签: email go gmail


【解决方案1】:

如果您在 Google 帐户上启用了 2 因素身份验证,则无法使用常规密码通过代码访问邮件。您需要生成一个应用专用密码并使用该密码代替您的实际密码。

按照以下步骤生成应用专用密码,

  • 登录您的 Google 帐户或使用此链接https://security.google.com/settings/security/apppasswords
  • 转到My Account > Sign-in & Security > App Passwords
  • 向下滚动到在密码和登录方法中选择应用程序,然后选择其他(自定义名称)给这个应用程序密码一个名称,例如:“automailer”
  • 选择生成 复制生成的长密码并将其粘贴到您的脚本中,而不是您的实际 Gmail 密码。

【讨论】:

    【解决方案2】:

    登录 gmail 帐户。 转到管理您的谷歌帐户。 打开不太安全的应用程序访问 在此之后,当您尝试从您的应用程序发送邮件时,您可能会收到错误消息。 如果是这样,请转到发现的安全问题(这是 google 帐户安全选项卡中的第一个选项) 在这里您需要验证最后一个活动是否经过验证,并且是您自己。

    【讨论】:

      【解决方案3】:

      转到您的 gmail 帐户中的安全性并启用 3party APP 访问...这将解决问题。仅供参考,我相信如果您打开了两步验证,这将不起作用。因此,您可能必须创建一个新的 gmail 帐户,然后启用转发....

      【讨论】:

        【解决方案4】:

        从https://security.google.com/settings/security/apppasswords 生成密码并改用该密码。

        应用密码是一个 16 位数的密码,它可以限制应用或设备访问您的 Google 帐户,而无需泄露您的个人密码并完全访问您的 Google 帐户。

        更多details如何生成一个!

        【讨论】:

        • 上面写着:The setting you are looking for is not available for your account.
        • 启用 2FA(2 步验证)身份验证:myaccount.google.com/security
        • 我启用了 2FA。生成 16 个字符的密码并使用它代替我原来的 somecrazypw。但是我仍然遇到同样的错误。有什么想法吗?
        • accounts.google.com/DisplayUnlockCaptcha(启用它以让您的应用访问您的帐户)
        • 刚刚意识到from email 应该和mysender@gmail.com user/passwd 一样,否则google 不投递会报错。所以noreply@myapp.com是不允许的。感谢您的提示。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-05-22
        • 2020-12-16
        • 2020-03-29
        • 2021-08-05
        • 2023-03-22
        相关资源
        最近更新 更多