Nodemailerr, Gmail с OAuth2, срок доступа истекает - PullRequest
0 голосов
/ 01 октября 2018

Следуя шагам, описанным здесь - Nodemailer / Gmail - Что такое токен обновления и как его получить? все работает, как и ожидалось, однако, похоже, accessToken продолжает истекать.Я получаю следующую ошибку:

{ Error: Invalid status code 400
    at ClientRequest.req.on.res (/node_modules/nodemailer/lib/fetch/index.js:221:23)
    at emitOne (events.js:116:13)

Код -

    let transporter = nodeMailer.createTransport({
        host: 'smtp.gmail.com',
        port: 465,
        secure: true,
        auth: {
            type: 'OAuth2',
            user: '123@gmail.com',
            clientId: '123.apps.googleusercontent.com',
            clientSecret: '123',
            refreshToken: '123',
            accessToken: 'abc'
        }
    });

 let mailOptions = {
        from: 'from@gmail.com', // sender address
        to: 'send@gmail.com', // list of receivers
        subject: 'contact form', // Subject line
        text: '222', // plain text body
        html: '<p>Name:'+ req.body.name + '</p><p>Company: '+ req.body.company + '</p><p>Email: '+ req.body.email + '</p><p>Message: '+ req.body.message + '</p>'
    };

transporter.sendMail(mailOptions, (error, info) => {
        if (error) {
            res.status(400).json({
                status: "error",
                details: error
            })
        }
        res.status(200).json({
            status: "success"
        })
    });

Если я генерирую новый accessToken, все работает снова, как и ожидалось ... Что я делаю не так?Это не совсем идеальное решение.

...