使用nodemailer和gmail发送multipe电子邮件 [英] Send multipe emails using nodemailer and gmail

查看:343
本文介绍了使用nodemailer和gmail发送multipe电子邮件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图发送电子邮件给多个收件人(约3.000)。所有电子邮件都存储在我的数据库(Mongo)中。所以我做了一个查询,返回所有的电子邮件地址,我使用异步发送所有的电子邮件,如:

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

我在我的app.js中创建了我的nodemailer transporte,如下所示:

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

当我尝试将此邮件发送给10封邮件时,它工作得很好,但是当我尝试发送到我的数据库中的所有电子邮件,我收到了一堆错误:

  {[错误:数据命令失败:421 4.7.0临时系统问题。稍后再试(WS)。 g32sm7412411qtd.28  -  gsmtp] 
代码:'EENVELOPE',
响应:'421 4.7.0临时系统问题。稍后再试(WS)。 g32sm7412411qtd.28 - gsmtp',
responseCode:421,
command:'DATA'}

我错过了什么吗?我需要设置一些能够在很短的时间内发送很多os邮件吗?

在此先感谢!

解决方案

从Gmail:
421 SMTP服务器错误:太多并发会话



您可以以不同的方式处理您的发送:


  • 等待关闭每次发送之间的会话


  • p>




最好的方法是设法在同一时间内不超过10个会话的限制:)


I am trying to send an email to multiple recipients ( about 3.000 ). All emails are stored in my DB ( Mongo ). So I make a query that return all the email addresses, and I use async to send all the emails, like:

    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);
}

I am creating my nodemailer transporte in my app.js, ,like so:

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

When I try to send this to only 10 mails, it works just fine, but when I try to send to all the emails in my DB, I am getting this error a bunch of times:

{ [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' }

Am I missing something? Do I need to set something to be able to send lots os emails in a small period of time? I am using a gmail account to do that!

Thanks in advance!

解决方案

From Gmail : 421 SMTP Server error: too many concurrent sessions

You may handle your send differently :

  • wait to close the session between each sending

  • send by bunch of mail

The best way is to manage to not exceed the limit of 10 session in the same time :)

这篇关于使用nodemailer和gmail发送multipe电子邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆