【问题标题】:I am using nodemailer and I need to send email to all the users in a array?我正在使用 nodemailer,我需要向数组中的所有用户发送电子邮件?
【发布时间】:2021-06-04 13:30:10
【问题描述】:

我正在使用 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)   
              }
          })
   })

这是正确的做法吗?

提前致谢!

【问题讨论】:

标签: javascript node.js nodemailer


【解决方案1】:

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

正如您在nodemailer documentation 中看到的,字段tocomma-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)   
   }
})

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 最大是多少。我可以用这种方法发送电子邮件的人数?
    • 我不确定。我认为这取决于您使用的电子邮件服务器
    猜你喜欢
    • 2019-11-05
    • 2021-05-07
    • 2017-10-13
    • 2020-06-28
    • 2017-08-05
    • 2019-02-04
    • 2015-05-19
    相关资源
    最近更新 更多