我正在使用 nodemailer,我需要向数组中的所有用户发送电子邮件吗?

I am using nodemailer and I need to send email to all the users in a array?

我正在使用 nodejs 和 nodemailer 向用户发送电子邮件。

我有这样的用户列表:-

[
  {
    name: "John Doe",
    email: "john@something.com"
  }, 
  { 
    name: "Jane Doe",
    email: "jane@something.com"
  }
  ...and more.
]

如何使用 nodemailer 向数组中的所有用户发送电子邮件。

查看我的代码-

users.map(user => {
          const mailOptions = {
              from: '*****@gmail.com',
              to: user.email,
              subject: subject, // Any subject
              text: message // Any message
          }

          transporter.sendMail(mailOptions, (err, info) => {
              if (err) {
                  console.log(err)
              } else {
                  console.log(info)   
              }
          })
   })

这样做正确吗?

提前致谢!

将电子邮件数组转换为逗号分隔的字符串

const recipients = users.map(user=>user.email).join(',');
// 'john@something.com','jane@something.com'

现在您拥有所有收件人。接下来使用 nodemailer example 一次向所有收件人发送电子邮件

您的代码将有效。但是,如果您想将同一封电子邮件发送给多个收件人,则有一种更简单的方法。

如您在 nodemailer documentation 中所见,字段 to 是一个 comma-separated list or an array of recipients email addresses that will appear on the To: field。所以像这样的东西就可以了

const userEmails = users.map(item => item.email); // array of user email
const mailOptions = { // send the same email to many users
    from: '*****@gmail.com',
    to: userEmails, 
    subject: subject, // Any subject
    text: message // Any message
}

transporter.sendMail(mailOptions, (err, info) => {
   if (err) {
      console.log(err)
   } else {
      console.log(info)   
   }
})