2017-08-13 1 views
1

J'ai actuellement une configuration pour envoyer des emails en utilisant nodemailer de gmail. Cela fonctionne correctement lorsque je crée manuellement un jeton d'accès (qui ne dure que ~ 1 heure). Cependant, après cette heure a passé, je reçois l'erreur ci-dessous. Notez, pendant cette heure je suis capable d'envoyer des emails très bien et tout fonctionne.Essayer d'utiliser nodemailer pour envoyer des emails en utilisant gmail et recevoir l'erreur: "Impossible de créer un nouveau jeton d'accès pour l'utilisateur"

{ Error: Can't create new access token for user 
at XOAuth2.generateToken (C:\Users\user\My-Projects\***\node_modules\nodemailer\lib\xoauth2\index.js:162:33) 
at XOAuth2.getToken (C:\Users\user\My-Projects\***\node_modules\nodemailer\lib\xoauth2\index.js:111:18) 
at SMTPConnection._handleXOauth2Token (C:\Users\user\My-Projects\***\node_modules\nodemailer\lib\smtp-connection\index.js:1421:27) 
at Immediate.setImmediate (C:\Users\user\My-Projects\***\node_modules\nodemailer\lib\smtp-connection\index.js:1239:45) 
at runCallback (timers.js:666:20) 
at tryOnImmediate (timers.js:639:5) 
at processImmediate [as _immediateCallback] (timers.js:611:5) code: 'EAUTH', command: 'AUTH XOAUTH2' } 

Le code que je utilise pour envoyer l'e-mail est:

var emailMsg = `Name: ${name}\nEmail: ${email}\n\nMessage:\n${msg}`; 

var transporter = nodemailer.createTransport({ 
    service: 'gmail', 
    auth: { 
     type: 'OAuth2', 
     user: process.env.GMAIL_ACC, 
     clientId: process.env.GMAIL_CLIENTID, 
     clientSecret: process.env.GMAIL_CLIENTSECRET, 
     refreshToken: process.env.GMAIL_RFRESHTOKEN, 
     accessToken: process.env.GMAIL_ACCESSTOKEN 
    } 
}); 

var mailOptions = { 
    from: process.env.GMAIL_ACC, 
    to: process.env.GMAIL_ACC, 
    subject: `Contact Form - ${name}`, 
    text: emailMsg 
}; 

transporter.sendMail(mailOptions, 
    function(mailErr, mailRes) { 
     if(mailErr) { 
      //Mail was unable to send 
      sendResponse(418, false, [{'email': 'Server was unable to send email.'}]); 
      console.log('Mail Error:\n ', mailErr); 
     } else { 
      //Everything worked correctly. (As far as responses go) 
      sendResponse(200, true); 
     } 
    } 
); 

choses que j'ai essayé: - Permettre à des applications moins sécurisées (ne semble pas avoir d'effet) - Désactivation AntiVirus (Cela a été à l'origine un problème pour quelque chose sans rapport) - Création d'une nouvelle application et un ensemble de jetons (Cela a eu 0 affect)

Toute aide serait appréciée, merci!

Répondre

0

process.env.GMAIL_RFRESHTOKEN - Devrait-il être GMAIL_REFRESH_TOKEN? En regardant à travers le code source de la bibliothèque, il semblerait que cette erreur serait lancée directement à partir de l'API GMail, car la bibliothèque ne construit jamais elle-même cette erreur. Cela supporterait la théorie selon laquelle le jeton d'actualisation est indéfini/null.

+0

Oui, merci! Il semble que je n'ai pas copié et collé autant que je le pensais. –