【发布时间】:2019-09-24 20:36:31
【问题描述】:
在我的Node.js 应用程序中,我使用nodemailer 库通过SMTP 发送电子邮件。
从代码中可以看出,我有一个名为employees 的数组。该数组有 2000 个电子邮件地址。
当我在应用程序下面使用代码时,只发送 10 封电子邮件,然后引发错误 Error: Invalid greeting. response=421 4.7.0 mailrelay1.***.** Error: too many connections from xxx.xx.xx.xxx。
在我看来,每个发送操作都不会关闭通道,即使我明确指定了.close() 方法。
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);
});
});
});
});
【问题讨论】:
标签: javascript node.js smtp nodemailer