В моем приложении 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);
});
});
});
});