Nodemailer for gmail: токен обновления не работает, ошибка: неверный код состояния 400 - PullRequest
0 голосов
/ 27 мая 2019

Я настраиваю сервер для отправки электронной почты через gmail, используя nodemailer.Я могу отправлять электронные письма с новым токеном доступа, но он не будет работать после истечения срока действия.Возвращенная ошибка просто говорит: «Ошибка: неверный код состояния 400».Это в настоящее время на локальном хосте.

Я пытался предоставить токен доступа с полем 'expires', обеспечить аутентификацию в самом сообщении и использовать разные токены обновления.Я никак не мог обновить свой токен.Поскольку я могу отправлять электронные письма с новым токеном доступа, я чувствую, что остальная часть моей конфигурации верна.

var nodemailer = require('nodemailer')
var auth = {
    type: "OAuth2",
    user: "xxxxxxx@gmail.com",
    clientID: "27xxxxxxxxxxxxxxxxxxxx6.apps.googleusercontent.com",
    clientSecret: "S6xxxxxxxxxxxR",

    // With only refresh token - BAD
    refreshToken: "1/hdxxxxxxxxxxxxxxxxxPDWFg",

    // With a fresh access token - OK
    // accessToken: "ya29.GlsUB5xxxxxxxxxxxxxxxxxxxxzuL2uYUvF5",

    // With both accessToken and expires - BAD 
    // expires: 1558728453
}
var transporter = nodemailer.createTransport({
    host: 'smtp.gmail.com',
    port: 465,
    secure: true,
    auth: auth,
})

//makeEmail is a function that creates the message object. 
transporter.sendMail(makeEmail(config.email, id, false, errorpath), function(err, info){
    if(err){
        console.log(`emailing got this error:
            ${err}
        code:${err.code}
        response:${err.response}
        responseCode:${err.responseCode}`)
        console.log(`and this stuff ${info}`)
    }
    else{
        console.log('at least the email worked.')
    }
})

Результат выполнения sendMail ():

Error: Invalid status code 400
code:EAUTH
response:undefined
responseCode:undefined
and this stuff undefined
...