node.js - 使用 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 秒。
谢谢
解决方案
从 UI 中,您应该让所有要通过电子邮件发送的用户进入 node.js 后端应用程序。在后端应用程序中,假设您获得了一个用户数组,您使用该Arrays.map()
方法执行一个函数,返回一个将发送电子邮件的承诺。然后,您可以使用Promise.all()
来查看发送了哪些电子邮件以及哪些电子邮件失败了。如果有任何失败,您可以将其显示为 UI 上的管理员通知,仅针对那些失败的用户。
另请注意,SendGrid API 似乎能够每秒接受 10k 个请求。看看这个。
推荐阅读
- c# - WCF RESTful 服务 - POST- WebFaultException 完整示例
- visual-studio - VS 2017 颜色主题编辑器 - 如何更改 Intellisense 自动完成背景颜色
- python - 根据其内容交换 numpy 二维数组中的数组
- css - 如何动态调整 vega 图表的大小以适应 CSS 网格
- python - %mprun 不断给出名称错误(导入模块的问题)
- post - 如何使用 Restassured 库从请求或响应对象中获取已在 POST 请求中传递的 body(json) 的内容?
- java - 如何使用子类外部的子引用访问与子变量同名的父类变量?
- marklogic - MarkLogic - Alternatives to using triggers
- asp.net-core - 带有 ASP.NET Core 2.2 的身份服务器 4
- c# - 如何解决字符串中只有一些字符的编码问题?