如何使用 nodemailer SES 传输正确限制消息发送?

ahe*_*rve 5 amazon-web-services node.js amazon-ses nodemailer

nodemailer 文档说:

如果您使用速率或连接限制,那么您还可以使用辅助方法来检测发送队列是否已满。这将有助于避免缓冲过多的消息。

它还提供了一个示例:

let transporter = nodemailer.createTransport({
    SES: new aws.SES({
        apiVersion: '2010-12-01'
    }),
    sendingRate: 1 // max 1 messages/second
});

// Push next messages to Nodemailer
transporter.on('idle', () => {
    while (transporter.isIdle()) {
        transporter.sendMail(...);
    }
});
Run Code Online (Sandbox Code Playgroud)

不幸的是,这对我来说相当神秘。难道sendingRate: 1只是提供了一个帮手,还是它处理的限制?

此外,这段代码在我看来就像sendMail(...)执行后会无限循环。我在这里错过了什么吗?

是否有关于如何使用此功能的示例或建议?

非常感谢 !

小智 1

你是对的,while 循环似乎只是用于测试发送速率。一旦删除 while 循环,文档中的代码应该可以正常工作。

transporter.on('idle', () => {
    transporter.sendMail(...);
});
Run Code Online (Sandbox Code Playgroud)