2017-01-12 3 views
0

J'essaye d'envoyer un email à plusieurs destinataires (environ 3.000). Tous les emails sont stockés dans ma base de données (Mongo). Je fais donc une requête qui renvoie toutes les adresses e-mail, et j'utilise async d'envoyer tous les e-mails, comme:Envoyer des emails multipe en utilisant nodemailer et gmail

function _sendEmail(params, callback) { 
    async.each(params.email, function(user, cb) { 
     const mailOptions = { 
      from: sender 
      to: user, 
      subject: Subject, 
      text: 'Hello Word', 
     }; 
     app.transporter.sendMail(mailOptions, function(err, response) { 
      if(err) console.log(err); 
      else console.log(response); 
      cb(); 
     }); 
    }, callback); 
} 

Je crée mon nodemailer dans mes app.js Transporte, comme si:

const transporter = nodemailer.createTransport(smtpTransport({ 
    host: 'smtp.gmail.com', 
    port: 465, 
    secure: true, 
    auth: { 
     user: senderMail, 
     pass: senderMailPassword 
    } 
})); 

lorsque je tente d'envoyer à seulement 10 mails, il fonctionne très bien, mais lorsque je tente d'envoyer à tous les e-mails dans mon DB, je reçois cette erreur un tas de fois:

{ [Error: Data command failed: 421 4.7.0 Temporary System Problem. Try again later (WS). g32sm7412411qtd.28 - gsmtp] 
    code: 'EENVELOPE', 
    response: '421 4.7.0 Temporary System Problem. Try again later (WS). g32sm7412411qtd.28 - gsmtp', 
    responseCode: 421, 
    command: 'DATA' } 

Ai-je oublié quelque chose? Dois-je configurer quelque chose pour pouvoir envoyer beaucoup de courriels dans une petite période de temps? J'utilise un compte Gmail pour le faire!

Merci d'avance!

Répondre

0

Gmail: 421 SMTP Erreur de serveur: trop de sessions simultanées

Vous pouvez gérer votre envoi différemment:

  • attente de fermer la session entre chaque envoi

  • envoyer par bouquet de courrier

Le meilleur moyen est de gérer de ne pas dépasser la limite de 10 session dans le même temps :)

+0

Merci Steven! Mais que voulez-vous dire par "envoyer par courrier"? – PauloIke

+0

Vous pouvez gérer pour envoyer plusieurs messages par session, mais je ne pense pas que Gmail gère cette chose. – Mech45

+0

néanmoins soyez prudent avec le maximum de sessions simultanées et la limite de message que vous pouvez envoyer par minute/heure. – Mech45