我使用的是nodemailer和nodemailer-ses-transport。
var nodemailer = require( 'nodemailer' );
var sesTransport = require( 'nodemailer-ses-transport' );我不得不发送几千封电子邮件(基本上是告诉不活跃的用户更新他们的个人资料)。基本上,我遇到了一个节流错误。具体来说,我正在点击我的rateLimit。虽然没有使用nodemailer-ses-transport:https://nodemailer.com/transports/ses/,但我一直在使用它
以下是我的传输器设置(我已经尝试了rateLimit和sendingRate,但似乎都不起作用-我仍然以封顶结束):
var transporter = nodemailer.createTransport( sesTransport( {
accessKeyId: secrets.awsAccessKeyId,
secretAccessKey: secrets.awsSecretAccessKey,
rateLimit: 5,
region: 'us-west-2'
} ) );此外,我在AWS中的速率限制设置为14。
发布于 2021-03-27 22:40:34
您不需要nodemailer-ses-transport包。只需设置sendingRate,然后照常使用sendMail即可。
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,确保该进程一直运行到发送完所有电子邮件为止。
https://stackoverflow.com/questions/43947185
复制相似问题