根据请求正文在nodemailer中发送多个附件

时间:2019-11-22 04:10:56

标签: javascript nodemailer

到目前为止,这里是我正在处理的代码

function sendMail(req,res){  
  var transporter = nodemailer.createTransport({
    host:process.env.NODEMAILER_HOST,
    port:process.env.NODEMAILER_PORT,
    auth: {
      user: process.env.NODEMAILER_ADDRESS,
      pass: process.env.NODEMAILER_PASS
    }
  })
     mailOptions = {
      from: req.body.from,
      to: req.body.to,
      cc: req.body.cc,
      bcc: req.body.bcc,
      subject: req.body.subject,
      text: req.body.text,
      html: req.body.html,
      attachments: [
        {
          filename: req.body.attachments[0].filename,
          path: req.body.attachments[0].path,
          contentType: req.body.attachments[0].contentType
        },{
          filename: req.body.attachments[1].filename,
          path: req.body.attachments[1].path,
          contentType: req.body.attachments[1].contentType
        }
      ]
    }

  transporter.sendMail(mailOptions,function(error,info){
      if(error){
        console.log(error);
        return res.status(400).json("Failed to Send");
      }else{
        res.status(201).json(req.body);
      }
    });
}

这是我的请求正文

{
"from": "example1@gmail.com",
"to": "example2@gmail.com",
"cc": "example3@gmail.com",
"bcc": "test@example.com",
"subject": "Test Request 1",
"text": "Example Text 1",
"html": "<p>Some Paragraph</p>",
"attachments": [
    {
        "filename": "test.doc",
        "path": "dirname/test.doc",
        "contentType": "application/doc"
    },{
        "filename": "test-coverted.pdf",
        "path":  "dirname/test-converted.pdf",
        "contentType": "application/pdf"        
    }
]

}

如何在不通过邮件选项一个一定义的情况下遍历附件?

由于我错失了mailOptions,因此我需要创建单独的传输方式,该传输方式又将为不同的附件发送不同的电子邮件。

1 个答案:

答案 0 :(得分:0)

您在响应正文中获得了相同的json对象键,因此您可以将附件数组直接分配给nodemailer mailOption对象的附件键。请参阅下面的内容。

function sendMail(req,res){  
  var transporter = nodemailer.createTransport({
    host:process.env.NODEMAILER_HOST,
    port:process.env.NODEMAILER_PORT,
    auth: {
      user: process.env.NODEMAILER_ADDRESS,
      pass: process.env.NODEMAILER_PASS
    }
  })
 mailOptions = {
  from: req.body.from,
  to: req.body.to,
  cc: req.body.cc,
  bcc: req.body.bcc,
  subject: req.body.subject,
  text: req.body.text,
  html: req.body.html,
  attachments: req.body.attachments
}