web-dev-qa-db-fra.com

Le nom d'utilisateur et le mot de passe ne sont pas acceptés lors de l'utilisation de nodemailer?

Ceci est mon settingController:

var sendSmtpMail = function (req,res) {
  var transport = nodemailer.createTransport({
  service:'gmail',
   auth: {
             user: "[email protected]",
             pass: "qwerr@wee"
        }
   });
   var mailOptions = {
        from: "[email protected]", 
        to:'[email protected]', 
        subject: req.body.subject+"nodejs working ?", 
        text: "Hello world ?",  
    }
    transport.sendMail(mailOptions, function(error, response){
      if(error){
         res.send("Email could not sent due to error: "+error);
         console.log('Error');
       }else{
         res.send("Email has been sent successfully");
         console.log('mail sent');
      } 
  }); 

dans postman j'ai l'erreur comme ça:

Email n'a pas pu être envoyé à cause d'une erreur: 

Error: Invalid login: 535-5.7.8 Username and Password not accepted. Learn more at 535 5.7.8  https://support.google.com/mail/?p=BadCredentials g7sm64435626pfj.29 - gsmtp
7
uma raja

Si vous avez activé l'authentification à 2 facteurs sur votre compte Google, vous ne pouvez pas utiliser votre mot de passe habituel pour accéder à Gmail par programme. Vous devez générer un mot de passe spécifique à l'application et l'utiliser à la place de votre mot de passe actuel.

Pas:

  • Connectez-vous à votre compte Google
  • Accédez à Mon compte> Connexion et sécurité> Mots de passe des applications.
  • (Connectez-vous à nouveau pour confirmer que c'est vous)
  • Faites défiler la liste jusqu'à Select App (dans la zone Password and login-in method) Et choisissez Other (nom personnalisé).
  • Attribuez un nom à ce mot de passe, par exemple. "nodemailer"
  • Choisissez Générer
  • Copiez le mot de passe long généré et collez-le dans votre script Node.js au lieu de votre mot de passe Gmail actuel. (Vous n'avez pas besoin d'espaces.)

Votre script va maintenant ressembler à ceci:

var transporter = nodemailer.createTransport({
  service: 'gmail',
  auth: {
    user: '[email protected]',
    pass: 'YOUR-GENERATED-APP-PASSWORD'
  }
});

J'espère que ça aidera quelqu'un.

5
dcdc

Vous utilisez le service gmail, votre courrier doit donc être dans gmail:

var transport = nodemailer.createTransport({
service:'gmail',
 auth: {
             user: "[email protected]",
             pass: "qwerr@wee"
        }
    });
var mailOptions = {
        from: "[email protected]", 
        to:'[email protected]', 
        subject: req.body.subject+"nodejs working ?", 
        text: "Hello world ?",  
    }
transport.sendMail(mailOptions, function(error, response){
    if(error){
         res.send("Email could not sent due to error: "+error);
         console.log('Error');
    }else{
         res.send("Email has been sent successfully");
         console.log('mail sent');
    } 
}); 
0
trungducng