流星电子邮件:连接未关闭
Meteor email: Connection not closed
我正在使用 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 returns 错误,即一个 SMTP 连接中有超过 10 封电子邮件,30 分钟后将邮件移至队列发送.即使在每封邮件后延迟 2.5 分钟,也会发生这种情况。
有没有办法在邮件发送后关闭与服务器的smtp连接?
邮件 url 是:smtp://localhost:25
.
Email
包基于 node4mailer
(在节点 4 上对 nodemailer
进行了 运行 的小修改)。
默认情况下,Email
sets pool=true
用于传输选项。这意味着
它将重用打开的连接,直到发送的消息数量达到其限制,而 nodemailer
default pool options have maxMessages=100
.
因此,通过修改您的 MAIL_URL
,您有 2 种方法可以解决您的问题:
将 10
作为 maxMessages
传递给 nodemailer
运输:
smtp://localhost:25/?maxMessages=10
禁用池(这将导致 nodemailer
为每封电子邮件打开一个新连接):
smtp://localhost:25/?pool=false
有用 link:nodemailer
文档:Pooled SMTP
我正在使用 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 returns 错误,即一个 SMTP 连接中有超过 10 封电子邮件,30 分钟后将邮件移至队列发送.即使在每封邮件后延迟 2.5 分钟,也会发生这种情况。
有没有办法在邮件发送后关闭与服务器的smtp连接?
邮件 url 是:smtp://localhost:25
.
Email
包基于 node4mailer
(在节点 4 上对 nodemailer
进行了 运行 的小修改)。
默认情况下,Email
sets pool=true
用于传输选项。这意味着
它将重用打开的连接,直到发送的消息数量达到其限制,而 nodemailer
default pool options have maxMessages=100
.
因此,通过修改您的 MAIL_URL
,您有 2 种方法可以解决您的问题:
将
10
作为maxMessages
传递给nodemailer
运输:smtp://localhost:25/?maxMessages=10
禁用池(这将导致
nodemailer
为每封电子邮件打开一个新连接):smtp://localhost:25/?pool=false
有用 link:nodemailer
文档:Pooled SMTP