SendGrid: Как отправить электронную почту в мой список контактов, используя Node.JS? - PullRequest
1 голос
/ 18 апреля 2020

Я пытаюсь отправлять ежедневные электронные письма в мой список контактов SendGrid с помощью Node.JS.

. В настоящий момент я опрашиваю всех своих подписчиков и перебираю их, а затем отправляю им электронные письма по одному. .

Проблема этого подхода заключается в том, что 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)
})

Так есть ли способ сразу отправить электронные письма в мой список контактов?

1 Ответ

1 голос
/ 18 апреля 2020

Ваш код устанавливает множество таймеров, которые будут срабатывать сразу через пять секунд.

Вы можете захотеть что-то подобное.

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