gpt4 book ai didi

javascript - 如何在nodemailer中正确发送电子邮件并关闭smtp连接?

转载 作者:太空宇宙 更新时间:2023-11-04 01:24:26 24 4
gpt4 key购买 nike

在我的 Node.js 应用程序中,我使用 nodemailer通过 SMTP 发送电子邮件的库。

正如您从代码中看到的,我有一个名为 employees 的数组。该数组有 2000 个电子邮件地址。

当我使用下面的代码时,应用程序仅发送 10 封电子邮件,然后引发错误错误:无效的问候语。 response=421 4.7.0 mailrelay1.***.** 错误:来自 xxx.xx.xx.xxx 的连接太多

在我看来,即使我明确指定了 .close() 方法,每个发送操作都不会关闭 channel 。

const express = require('express');
const nodemailer = require('nodemailer');
const forAsync = require('for-async');

let transporter = nodemailer.createTransport({
host: process.env.SMTP_HOST,
port: parseInt(process.env.SMTP_PORT, 10),
secure: false,
tls: {
rejectUnauthorized: false
}
});

const router = express.Router();

router.post('/employees', function(request, response) {
const employees = [***];

forAsync(employees, (employee) => {
return new Promise(resolve => {
// Setup email options.
const options = {
from: process.env.EMAIL,
to: employee,
subject: "System Alert",
html: html
};

return new Promise((resolve, reject) => {
setTimeout(() => {
transporter.sendMail(options, (error) => {
if(error) {
console.log(error);
reject(error);
} else {
resolve();
}
});

transporter.close();
}, 5000);
}).then(() => {
resolve();
}).catch(error => {
console.log(error);
});

});

});

});

最佳答案

您可能想考虑发送 pool of emails .

为此,请切换 'pool' option当您创建传输时:

let transporter = nodemailer.createTransport({
pool: true,
host: process.env.SMTP_HOST,
port: parseInt(process.env.SMTP_PORT, 10),
secure: false,
tls: {
rejectUnauthorized: false
}
});

关于javascript - 如何在nodemailer中正确发送电子邮件并关闭smtp连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58080247/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com