Search code examples
javascriptnode.jsexpressoauth-2.0nodemailer

Google refresh token 7-day expiration period in Nodemailer


Google shuts down "Less secure app" feature on their mail services last month. Because of this, I cannot just use Nodemailer by using email and password only. I am forced to setup Nodemailer with Google OAuth. But, the refresh token expires every week. What should I do?

Here's my transporter code.

const transporter = nodemailer.createTransport({
            service: 'gmail',
            auth: {
                type: 'OAuth2',
                user: process.env.GA_MAIL,
                accessToken,
                clientId: process.env.GA_CLIENT_ID,
                clientSecret: process.env.GA_CLIENT_SECRET,
                refreshToken: process.env.GA_REFRESH_TOKEN,
            },
});

Solution

  • Setting the testing mode into a production mode in Google Developer Console will prevent refresh token from exipiring.