我正在尝试使用此函数测试应用程序从本地主机发出的电子邮件:
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 帐户。
有关如何生成的更多详细信息!
小智 10
2023:不允许允许安全性较低的应用程序。解决方案:登录您的 Gmail 帐户,转到帐户设置 > 隐私并启用 2FA。搜索应用程序密码并创建一个后,复制该密码并将其输入作为应用程序的密码。这将解决您面临的任何身份验证错误。
如果您在 Google 帐户上启用了两步身份验证,则无法使用常规密码通过代码访问邮件。您需要生成应用程序专用密码并使用该密码代替您的实际密码。
执行以下步骤来生成应用程序特定密码,
My Account > Sign-in & Security > App Passwords小智 5
转到 Gmail 帐户内的安全并启用 3party APP 访问...这将解决问题。仅供参考,我相信如果您打开了两步身份验证,这将不起作用。所以你可能需要创建一个新的 Gmail 帐户,然后启用转发......