Показать прогресс при отправке нескольких писем - PullRequest
1 голос
/ 14 мая 2019

Я отправляю несколько электронных писем с моего сервера node.js и хочу показать прогресс в веб-интерфейсе о том, сколько писем было отправлено.

Я написал код, который отправлял ответ только после того, как каждое электронное письмо было отправлено, однако мне нужно уведомить интерфейс о прогрессе. Насколько я знаю, я не могу отправить несколько ответов на один http-запрос, поэтому я немного заблудился здесь.

Мой обработчик запроса на электронную почту:

 const send = async (req, res) => {
    //parsing request body
    const {user, recievers, subject, text} = req.body;

    //Getting sender credentials from db
    const user = await UserSettings.findOne({ user }, 'MAIL');

    //creating nodemailer transporter
    const transporter = nodemailer.createTransport({
      service: user.MAIL.SERVICE,
      auth: {
        user: user.MAIL.USER,
        pass: user.MAIL.PASSWORD,
      },
    });

    //sending email to every reciever
    recievers.forEach(reciever=> {
      const mailOptions = {
        from: user.MAIL.USER,
        to: reciever,
        subject,
        text
      };

      return transporter.sendMail(mailOptions, (error, info) => {
        if (!error) {
          console.log(`Email sent: ${info.response}`);
        } else {
          console.log(error);
        }
      });
    });

    return res.sendStatus(204);
};
...