如何使用Node.js和Nodemailer每10秒发送一封电子邮件?

时间:2019-05-22 23:16:40

标签: node.js nodemailer

我正在尝试创建一个程序,该程序从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')
  })

0 个答案:

没有答案