Как правильно отправить письмо и закрыть smtp-соединение в nodemailer? - PullRequest
1 голос
/ 24 сентября 2019

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

        });

    });

});

1 Ответ

0 голосов
/ 24 сентября 2019

Возможно, вы захотите посмотреть на пул писем .

. Для этого переключите параметр 'пул' при создании транспорта:

let transporter = nodemailer.createTransport({
  pool: true,
  host: process.env.SMTP_HOST,
  port: parseInt(process.env.SMTP_PORT, 10),
  secure: false,
  tls: {
    rejectUnauthorized: false
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...