我正在部署我的Node.js应用程序。但是,我在发送注册电子邮件时遇到问题。
const transporter = nodemailer.createTransport({
service: 'Gmail',
auth: {
user: GMAIL_USER,
pass: GMAIL_PASS,
},
});
......
......
transporter.sendMail({
to: newUser.email,
subject: 'Confirm Email',
html: `Please click this email to confirm your email: <a href="${url}">${url}</a>`
});
当我尝试在本地主机上运行它时,此方法非常有效,但是当我将文件上传到服务器并尝试使用它时,google阻止了登录尝试,并且我收到一封电子邮件,提示
Someone just used your password to try to sign in to your account. Google blocked them, but you should check what happened.
每次,我都单击“这就是我”按钮,但以后任何尝试都仍然被阻止。
我启用了“安全性较低的应用程序”。有没有一种方法可以将要从我的gmail发送的IP列入白名单?还是一种可以使它正常工作的方法?
答案 0 :(得分:3)
您有两个选择。您可以将对不太安全的应用的访问权限设置为已启用,或者从Google OAuth2.0获取accessToken和refreshToken并将其用于您的nodemailer
配置
如果选择选项二,则传输的配置将如下所示:
auth: {
type: 'OAuth2',
user: 'user@example.com',
accessToken: 'ya29.Xx_XX0xxxxx-xX0X0XxXXxXxXXXxX0x'
}
答案 1 :(得分:0)
有时不指定恢复电子邮件、电话号码的人。在这种情况下,谷歌也会阻碍登录。在我的情况下,谷歌首先允许我打开不太安全的应用程序,但第二天它拒绝了。所以我为该特定电子邮件添加了恢复电子邮件并且它起作用了。所以这就是我认为谷歌安全算法的工作原理。
答案 2 :(得分:-2)
必须为gmail填写一些隐藏的验证码,然后一切正常。遗憾的是没有链接,也没有ID发布。