【问题标题】:SendGrid: How to send emails to my contact list using Node.JS?SendGrid:如何使用 Node.JS 向我的联系人列表发送电子邮件?
【发布时间】:2020-08-01 06:40:22
【问题描述】:

我正在尝试使用 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)
})

那么有什么方法可以一次将电子邮件发送到我的联系人列表吗?

【问题讨论】:

  • Sendgrid 说他们的速率限制是每 分钟 600 个请求。 或每 10 个请求。因此,消息之间的 100 毫秒延迟应该可以解决问题。 sendgrid.com/docs/for-developers/sending-email/using-the-v2-api/…
  • 谢谢!那么这是发送此类电子邮件的最佳方式吗?如果我有 18000 个订阅者怎么办?第一封电子邮件和最后一封电子邮件之间会有 30 分钟的延迟。
  • 对于这种卷,您可能需要向 SendGrid 的支持团队寻求建议。他们可能会为您放宽速率限制。问一下也无妨。

标签: javascript node.js email sendgrid


【解决方案1】:

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

你可能想要这样的东西。

/** 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)
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 2012-06-24
    • 2016-01-27
    • 1970-01-01
    相关资源
    最近更新 更多