我使用Meteor.methods()发送个性化的电子邮件通知给我的用户:
Orders._collection.rawCollection()
.distinct('user', { day: dayId })
.then((result) => {
let mailList = []
User.find({ _id : { $in : result } }).forEach((user) => {
mailList.push({ to: user.emails[0].address, room: user.profile.room });
});
console.log('setting mail queue...')
mailList.forEach((user, index) => {
let delay = 0;
let time = delay + (index*200);
console.log('queue set for user '+user.to+" for "+ time/1000 +' seconds')
Meteor.setTimeout(() => {
console.log('sending mail to: ' + user.to);
Email.send({
to: 'user.to',
from: "test@example.pl",
subject: "test ",
html: template,
});
}, time)
})
});
此示例发送所有邮件,但如果邮件超过10条,则EXIM返回错误,即一个SMTP连接中有超过10封电子邮件,并且邮件将移至队列以在30分钟后发送。即使每封邮件延迟2.5分钟,也会发生这种情况。
发送邮件后有没有办法关闭与服务器的smtp连接?
邮件网址是:smtp://localhost:25
。
答案 0 :(得分:2)
Email
包基于node4mailer
(对nodemailer
的小修改以在节点4上运行它。)
默认情况下,Email
sets pool=true
表示传输选项。这意味着
它会重复使用已打开的连接,直到发送的邮件数量达到其限制,而nodemailer
default pool options have maxMessages=100
。
因此,通过修改MAIL_URL
,您有两种方法可以解决您的问题:
将10
作为maxMessages
传递nodemailer
:
smtp://localhost:25/?maxMessages=10
禁用池(这会导致nodemailer
为每封电子邮件打开一个新连接):
smtp://localhost:25/?pool=false
有用的链接:nodemailer
文档:Pooled SMTP