使用nodemailer和gmail发送multipe电子邮件 [英] Send multipe emails using nodemailer and gmail
问题描述
我试图发送电子邮件给多个收件人(约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屋!