我正在尝试创建一个程序,该程序从CSV读取学生姓名并将数据存储在数组中。然后,我想每隔10秒向每位学生发送一封电子邮件,以便不超过Outlook的发件人线程限制。问题的第一部分工作正常,但是我的问题是它一次发送了所有邮件并且超出了限制。我尝试使用setTimeout和setInterval,但似乎无法使其正常工作。我目前已对其进行设置,因此它会向我发送仅收到一些电子邮件的电子邮件。我想知道一个可以解决此问题的解决方案。
这是下面的代码
fs.createReadStream(path.join(__dirname, 'csv', csvPath))
.pipe(csv())
.on('data', data => {
students = []
students.push(data)
const wait = ms => new Promise((resolve, reject) => setTimeout(resolve, ms))
students.forEach(s => {
wait(s * 10000).then(() => {
nodeoutlook.sendEmail({
auth: {
user: 'email@outlook.com',
pass: 'secret'
},
from: 'email@outlook.com',
to: 'email@outlook.com',
subject: s.studentname,
html: s.studentname,
text: s.studentname,
onError: e => console.log(e),
onSuccess: i => console.log(i)
})
console.log('Sending')
})
})
})
.on('end', () => {
console.log('Finish')
})