smtp 错误:535 5.7.8 go 中的 gmail 不接受用户名和密码

Mil*_*way 16 email gmail go

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

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
}
Run Code Online (Sandbox Code Playgroud)

但我收到这个错误:

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: error seding contact us form 535 5.7.8 不接受用户名和密码。

尽管 的凭据mysender@gmail.com是正确的并且我已Allow less secure apps启用mysender@gmail.com.

那么这里可能出了什么问题呢?我该如何解决它?

p9s*_*9sh 19

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

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

有关如何生成的更多详细信息!

  • 它说:“您正在寻找的设置不适用于您的帐户。” (11认同)
  • 启用 2FA(两步验证)身份验证:https://myaccount.google.com/security (9认同)

小智 10

2023:不允许允许安全性较低的应用程序。解决方案:登录您的 Gmail 帐户,转到帐户设置 > 隐私并启用 2FA。搜索应用程序密码并创建一个后,复制该密码并将其输入作为应用程序的密码。这将解决您面临的任何身份验证错误。

  • +将年度代表纳入答案中。效果很好。谢谢你! (2认同)

Cod*_*ker 7

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

执行以下步骤来生成应用程序特定密码,

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

在此输入图像描述


小智 5

转到 Gmail 帐户内的安全并启用 3party APP 访问...这将解决问题。仅供参考,我相信如果您打开了两步身份验证,这将不起作用。所以你可能需要创建一个新的 Gmail 帐户,然后启用转发......