Я настраиваю сервер для отправки электронной почты через 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