2017-03-01 3 views
0

j'ai le code de noeud suivant:nodemailer avec les paramètres XOauth2 dit mauvaises références

var nodemailer = require("nodemailer"); 
var xoauth2 = require('xoauth2'); 
/* 
    Here we are configuring our SMTP Server details. 
    STMP is mail server which is responsible for sending and recieving email. 
*/ 
var smtpTransport = nodemailer.createTransport({ 
    service: "Gmail", 
    host: "smtp.gmail.com", 
    auth: { 
     XOAuth2: { 
      user: "[email protected]", 
      pass: "****", 
      clientId:"myclientidenteredhere", 
      clientSecret:"mysecretenteredhere", 
      refreshToken:"mytokenenteredhere" 
     } 

    } 
}); 
module.exports = function(app, passport){ 

    app.get('/send',function(req,res){ 
     var mailOptions={ 
      to : '[email protected]', 
      from: req.query.email, 
      subject : req.query.subject, 
      text : req.query.name +": "+req.query.message 
     } 
     console.log(mailOptions); 
     smtpTransport.sendMail(mailOptions, function(error, response){ 
      if(error){ 
       console.log(error); 
       res.end("error"); 
      }else{ 
       console.log("Message sent: " + response.message); 
       res.end("sent"); 
      } 
     }); 
    }); 

Je suis actuellement this tutoriel. En fait suivi beaucoup, mais c'est le plus succinct.

Je reçois l'erreur suivante:

Error: invalid login: 535-5.7.8 username and password not accepted

Quelqu'un peut-il me aider à comprendre ce que je suis absent, j'ai passé plus de 3 heures des recherches sur ce.

Répondre

2

Je semble avoir fait face à ce problème tout à l'heure. J'ai une ancienne implémentation fonctionne très bien avec xoauth, une autre application avec le même code, mais une nodemailer plus récente installation ne donne

Invalid login: 535-5.7.8 Username and Password not accepted.

Je suis passé de xoauth2 comme si

var generator = require('xoauth2').createXOAuth2Generator({ 
           user: 'xxx', 
           clientId: 'xxx', 
           clientSecret: 'xxx', 
           refreshToken: 'xxx' 
          }); 

et

var transporter = nodemailer.createTransport(({ 
           service: 'gmail', 
           auth: { 
            xoauth2: generator 
           } 

à

var transporter = nodemailer.createTransport(({ 
           service: 'gmail', 
           auth: { 
            type: 'OAuth2', 
            user: 'xxx', 
            clientId: 'xxx', 
            clientSecret: 'xxx', 
            refreshToken: 'xxxx' 
           } 
          })); 

Cela fonctionnait alors pour moi. Je ne sais pas si c'est ça mais ça vaut le coup d'essayer. J'ai suivi le même tutoriel pour l'installation de Gmail, cela a fonctionné dans ma précédente implémentation et encore avec le nouveau projet.