首页 > 解决方案 > 使用 Node.JS 的 sendgrid/mail 库有效发送 1000 封唯一电子邮件的最佳方法

问题描述

我的 Node.JS 应用程序中有一个管理面板,管理员可以在其中登录并向用户组发送电子邮件。有时这些组可以包含多达 1,000 人。当管理员在管理面板中撰写电子邮件并点击发送按钮时,我从数据库中获取每一行并为该电子邮件正文生成一个唯一链接,然后使用 @sendgrid/mail npm 包发送它。我查看了以下页面,它很有帮助:https ://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/README.md#email-use-cases

但是,我不知道创建大量电子邮件并将其转储到其中一个库方法中是否更有效,或者我是否应该循环并在每次迭代中进行单独的方法调用并使用 Promise.all。我想我需要一个解决方案,它不会使 Sendgrid 速率限制生气,但也不会让管理员的 http 请求加载 30 秒。

谢谢

标签: node.jsemailsendgrid

解决方案


从 UI 中,您应该让所有要通过电子邮件发送的用户进入 node.js 后端应用程序。在后端应用程序中,假设您获得了一个用户数组,您使用该Arrays.map()方法执行一个函数,返回一个将发送电子邮件的承诺。然后,您可以使用Promise.all()来查看发送了哪些电子邮件以及哪些电子邮件失败了。如果有任何失败,您可以将其显示为 UI 上的管理员通知,仅针对那些失败的用户。

另请注意,SendGrid API 似乎能够每秒接受 10k 个请求。看看这个


推荐阅读