首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS节流和Nodemailer

AWS节流和Nodemailer
EN

Stack Overflow用户
提问于 2017-05-13 06:17:02
回答 1查看 239关注 0票数 0

我使用的是nodemailernodemailer-ses-transport

代码语言:javascript
复制
var nodemailer = require( 'nodemailer' );
var sesTransport = require( 'nodemailer-ses-transport' );

我不得不发送几千封电子邮件(基本上是告诉不活跃的用户更新他们的个人资料)。基本上,我遇到了一个节流错误。具体来说,我正在点击我的rateLimit。虽然没有使用nodemailer-ses-transporthttps://nodemailer.com/transports/ses/,但我一直在使用它

以下是我的传输器设置(我已经尝试了rateLimitsendingRate,但似乎都不起作用-我仍然以封顶结束):

代码语言:javascript
复制
 var transporter = nodemailer.createTransport( sesTransport( {
            accessKeyId: secrets.awsAccessKeyId,
            secretAccessKey: secrets.awsSecretAccessKey,
            rateLimit: 5,
            region: 'us-west-2'
        } ) );

此外,我在AWS中的速率限制设置为14。

EN

回答 1

Stack Overflow用户

发布于 2021-03-27 22:40:34

您不需要nodemailer-ses-transport包。只需设置sendingRate,然后照常使用sendMail即可。

代码语言:javascript
复制
transporter = nodemailer.createTransport({
  SES: { ses, aws },
  sendingRate: 14,
});

const params = {
  from: 'EMAIL',
  to: 'EMAIL',
  subject: 'Message',
  html: 'I hope this <b>message</b> gets sent!',
  text: 'I hope this message gets sent!',
  // attachments: [{ filename: 'card.pdf', content: data, contentType: 'application/pdf' }],
};

transporter.sendMail(params, (err, info) => {
  if (err) {
    console.log(JSON.stringify(err));
  }
  console.log(info.envelope);
  console.log(info.messageId);
});

这里要注意的重要一点是,nodemailer等待下一秒继续处理下一批限制的电子邮件,依此类推。因此,如果您正在运行的脚本在调用最后一个sendMail()之后立即退出,则限制的电子邮件将永远不会发送。通过监听on idle或使用settimeout,确保该进程一直运行到发送完所有电子邮件为止。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43947185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档