簡體   English   中英

Gmail 阻止 Nodemailer 發送郵件

[英]Gmail blocks Nodemailer from sending mail

我正在部署我的 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>`
                    });

當我嘗試在本地主機上運行它時,這非常有效,但是一旦我將文件上傳到我的服務器並嘗試它,谷歌就會阻止登錄嘗試,我收到一封電子郵件說

Someone just used your password to try to sign in to your account. Google blocked them, but you should check what happened.

每次,我都會點擊“這就是我”按鈕,但任何未來的嘗試仍然會被阻止。

我啟用了“不太安全的應用程序”。 有沒有辦法將要從我的 gmail 發送的 IP 列入白名單? 或者一種讓這個工作正常的方法?

您有兩個選擇。要么將訪問安全性較低的應用程序設置為Enabled ,要么從 Google OAuth2.0 獲取 accessToken 和 refreshToken 並在您的nodemailer配置中使用它們

如果您選擇選項二,您的傳輸配置將如下所示:

auth: {
    type: 'OAuth2',
    user: 'user@example.com',
    accessToken: 'ya29.Xx_XX0xxxxx-xX0X0XxXXxXxXXXxX0x'
}

有時不分配恢復電子郵件,電話號碼的人。在這種情況下,谷歌也會阻礙登錄。 在我的情況下,谷歌首先允許我打開不太安全的應用程序,但第二天它拒絕了。 所以我為該特定電子郵件添加了恢復電子郵件並且它起作用了。 所以這就是我認為谷歌安全算法的工作原理。

不得不為 gmail 填寫一些隱藏的驗證碼,然后一切正常。 可惜沒有鏈接,或者id張貼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM