Gmail阻止Nodemailer发送邮件

时间:2020-02-04 03:23:50

标签: node.js nodemailer

我正在部署我的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列入白名单?还是一种可以使它正常工作的方法?

3 个答案:

答案 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发布。