首页 > 解决方案 > 使用nodemailer向多个用户发送邮件后,如何仅在邮件的收件人部分显示特定用户的电子邮件

问题描述

当我使用 nodemailer 向多个用户发送电子邮件时,如下所示。在体内,to如来'one@gmail.com, two@gmail.com'


const mailOptions = {
  from: 'from@gmail.com',
  to: request.body.to,
  subject: request.body.subject,
  text: request.body.text,
}
let result = await transport.sendMail(mailOptions)

现在当我打开邮件并看到

from: from@gmail.com
to:   one@gmail.com
      two@gmail.com
Date: 20 July 2021

在“收件人”部分:显示所有用户的电子邮件。虽然我已经向多个用户发送了邮件,但我只想在 to 部分显示该特定用户(电子邮件正在接收的人)的电子邮件。我该怎么做?

标签: javascriptnode.jsemailgmailnodemailer

解决方案


要获得您想要的效果,请多次发送电子邮件,每个人一次

这样,每个人的电子邮件的“收件人”将只反映他们。

另一种方法是将其发送给您自己,并且只密件抄送所有收件人,但我认为您不希望这样,因为它似乎没有人情味。

在开始发送下一封邮件的过程之前,您不必等待每封电子邮件发送完毕

在您当前速度较慢的代码中,您可能会在开始下一个收件人之前为每个收件人await获取结果。sendMailsendMail

const recipients = ["a@gmail.com","b@gmail.com"];

const promiseArray = recipients.map(recipient=>{
    const mailOptions = {
        from: 'from@gmail.com',
        to: recipient,
        subject: request.body.subject,
        text: request.body.text,
    }
    return transport.sendMail(mailOptions)
})

const resultArray = await Promise.all(promiseArray)

但是,通过此处的方法,您将sendMail首先启动所有个人 s,然后等待所有个人承诺解决。这应该可以更好地扩展。


推荐阅读