我正在开发电子邮件发送服务,可能用于使用 sendgrid Web API 发送批量电子邮件,但是我无法找到可扩展系统的最佳做法。我希望保留所有未能发送的电子邮件的记录,并在发送完所有电子邮件后重试发送给那些失败的电子邮件。我使用的是NodeJ,所以只想知道是否有任何方法可以加快我的流程(例如一次发送多封电子邮件)
答案 0 :(得分:0)
Sendgrid为node.js集成提供了一个npm软件包,因此您不必重新发明轮子。它以高速率接收消息,因此将您的消息发送到sendgrid不会有问题。您只需将邮件转储到sendgrid中即可。
电子邮件是一种存储转发系统,本质上是异步的。这意味着它无法实时运行。有些邮件会在几秒钟内传递完毕,而其他邮件则要花费数小时(例如,当它们变软时,例如“稍后重试”,即从目标服务器拒绝邮件)。
Sendgrid使用“反弹” API处理此问题。 (并且在他们的Web后端应用程序中具有“反弹”功能)。许多退回是“硬性”退回,这意味着您必须避免尝试再次将邮件发送到该地址。您可以使用退回API来检索退回邮件的列表。您应该从电子邮件列表中删除这些地址,而不要再次发送。 (Sendgrid禁止重复发送无法交付的邮件的用户。)
他们也有一个“无效的电子邮件” API。这类似于“退回”,并返回格式不正确的地址列表,或者如果sendgrid可以告诉它,则返回目标服务器上不存在的地址。同样,您应该从电子邮件列表中删除这些地址。如果它们现在无效,则明天将无效。
Sendgrid提供了有关此主题的各种教程。
答案 1 :(得分:0)
有多种处理方法,我将建议两种对我来说显而易见的方法。
(推荐-轻松),使用称为 queue Async Documentation的异步模块的控制流选项。您可以以对象请求数组的形式提供所有请求,然后将并发设置更改为100,它将一次并发运行100个工作程序,并记录错误以建立独立的机制,并且一旦所有值被单独处理。
使用node.js本机方法生成多个worker。