SendGrid:如何使用 Node.JS 向我的联系人列表发送电子邮件?

SendGrid: How to send emails to my contact list using Node.JS?

我正在尝试使用 Node.JS 向我的 SendGrid 联系人列表发送每日电子邮件。

目前我正在查询所有订阅者并遍历他们然后将电子邮件一封一封地发送给他们。

这种方法的问题是 SendGrid 不允许我一次发送 1000 封电子邮件并抛出速率限制错误,因此我需要在每个请求之间创建 5 秒的延迟。

这就是我现在所做的:

verifiedSubscribers.map(async (subscriber, i) => {
  const timer = setTimeout(() => {
    sgMail.send({
      from: 'me@example.com',
      to: subscriber.email,
      subject: 'test',
      text: 'test',
      html: 'test',
    })

    clearTimeout(timer)
  }, 5000 * i)
})

请问有什么办法可以一次性把邮件发到我的通讯录里吗?

您的代码设置了很多计时器,这些计时器将在五秒后一次全部触发。

你可能想要这样的东西。

/** await snooze(100) delays for 100 milliseconds */
function snooze(milliseconds) {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve()
    }, milliseconds)
  })
}

async function sendAll (verifiedSubscribers) {
  for (subscriber of verifiedSubscribers) {
    await sgMail.send({ ...  whatever ...} )
    await snooze(100)
  }
}