SendGrid Несколько писем нескольким получателям Node JS из Firebase Firestore - PullRequest
0 голосов
/ 27 февраля 2020

Я использую функции SendGrid и Firebase для отправки нескольких писем нескольким получателям. Код, который я использую, работает правильно при отправке на тестовый список из 4 адресов электронной почты, но не работает при попытке отправки на 4000 адресов электронной почты. Также нет сообщения об ошибке от SendGrid.

Этот код также работает и возвращает список адресов электронной почты, напечатанных в консоли, если закомментирован блок кода SendGrid. Вы знаете, что может быть не так?

Спасибо

exports.adminSendGroupMessage = functions.region('europe-west2').https.onCall((data, context) => {
  const emailHTMLData = emailHTMLData;

  var emailDataArray = [];

          //Fetch contacts list
          let testContactsRef = db.collection('contacts-list');
          return testContactsRef.get().then(snapshot => {
              snapshot.forEach(doc => {
                // console.log(doc.id, '=>', doc.data());
                console.log("Fetched contact with ID: " + doc.id);

                //Extract contact data
                const firstName = doc.data().name || "";
                const surname = doc.data().surname || "";
                const emailAddress = doc.data().emailAddress;

                var emailData =  {
                  to: emailAddress,
                  from: 'fromEmail@email.com',
                  subject: messageSubject,
                  text: 'Email for ' + firstName,
                  html: emailHTMLData,
                  customArgs: {
                    ref: 'msg-ref'
                  },
                }

                    //Add new email data to the array
                    emailDataArray.push(emailData);
              });

              return Promise.all(emailDataArray).then(results => {

                  //Send emails with all data once contact fetch complete
                console.log("Success fetching contacts - send emails.");
                sendGridGroupMessages(emailDataArray);
                return { success : true, message: "Success sending emails" };

            })

});

function sendGridGroupMessages(emailDataArray) {
  console.log('Send emails to group function with data: ' + emailDataArray.length);

  var i,j, splitArray,chunk = 998;
  for (i=0,j=emailDataArray.length; i<j; i+=chunk) {
      splitArray = emailDataArray.slice(i,i+chunk);
      // do whatever
      //Send emails
    sgMail.send(splitArray, (error, result) => {
      if (error) {
        //Do something with the error
        console.log("Error sending group emails: " + error);
        // throw new functions.https.HttpsError('internal', 'There was an error sending the group emails - ' + error.message + ' (' + error.code + ')');
      } else {
        //Celebrate
        console.log("Success sending group emials: " + JSON.stringify(result));
        // return { success : true };
      }
    });
  }

1 Ответ

0 голосов
/ 27 февраля 2020

Вы должны опубликовать журнал ошибок. Если ошибок нет, это означает, что они отправлены, но проверьте действия SendGrid, чтобы увидеть, что случилось с этими электронными письмами

...