Как использовать nodemailer в nodejs для массовой отправки данных? - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть код nodemailer ниже, он в порядке и работает. Моя проблема заключается в отправке отдельных данных на отдельную электронную почту. У id_array есть два электронных письма, а у no_array два отдельных данных. Как мне отправить «1» по адресу praagag@cybrosys.in и «2» по blockchain@cybrosys.net?

var id_array = ["prayag@cybrosys.in","blockchain@cybrosys.net"];
var no_array = ["1","2"];


var mailer = require("nodemailer");

// Use Smtp Protocol to send Email
var smtpTransport = mailer.createTransport({
    service: "Gmail",
    auth: {
        user: "mymail@gmail.com",
        pass: "mypassword"
    }
});

var mail = {
    from: "Sachin Murali <blockchain@cybrosys.net>",
    to: [id_array],
    subject: "Sachin's Test on new Node.js project",
    text: [no_array]
   // html: "<b>"\"[no_array]\""</b>"
}

smtpTransport.sendMail(mail, function(error, response){
    if(error){
        console.log(error);
    }else{
        console.log("Message sent: " + JSON.stringify(response));
    }

    smtpTransport.close();
  });

1 Ответ

0 голосов
/ 26 апреля 2019

Подготовьте параметры для каждого получателя в цикле и используйте обещание для параллельного запуска всех писем

  var id_array = ["prayag@cybrosys.in","blockchain@cybrosys.net"];
  var no_array = ["1","2"];

  var mailer = require("nodemailer");

    // Use Smtp Protocol to send Email
  var smtpTransport = mailer.createTransport({
    service: "Gmail",
    auth: {
        user: "mymail@gmail.com",
        pass: "mypassword"
    }
 });

 let emailPromiseArray = [];

    //prepare the email for each receiver
    for(let i=0;i<id_array.length;i++){
         emailPromiseArray.push(
             sendMail({
                  from: "Sachin Murali <blockchain@cybrosys.net>",
                  to: id_array[i],
                  subject: "Sachin's Test on new Node.js project",
                  text:no_array[i]
             })
         )
    }

    //run the promise
    Promise.all(emailPromiseArray).then((result)=>{
        console.log('all mail completed');
    }).catch((error)=>{
        console.log(error);
    })

    function sendMail(mail){

        return new Promise((resolve,reject)=>{
            smtpTransport.sendMail(mail, function(error, response){
        if(error){
            console.log(error);
            reject(error);
        }else{
            console.log("Message sent: " + JSON.stringify(response));
            resolve(response);
        }

        smtpTransport.close();
            });
        })
    }
...