Nodemailer流式传输文件附件

时间:2016-01-07 06:12:39

标签: node.js nodemailer

我正在尝试发送一个在发出get请求时触发的文件。我相信文件的内容是get请求的res.body。查看nodemailer文档,我看到可以指定文件的内容。

request.get({ 
      url: 'https://docs.google.com/spreadsheets/export?id='+posting.driveID+'&exportFormat=xlsx', 
      encoding: null,  // Force Request to return the data as Buffer
      headers: {
          Authorization: "Bearer "+access_token
      }
      }, function done (err, res) {
        console.log(res.body);
        var mailOptions={
          from : "<>",
          to : "<>",
          subject : "new download",
          generateTextFromHTML : true,
          html : "<h2>Download "+posting.title+"</h2>",
          attachments: [{
                filename: "test.xlsx",
                content: res.body
          }]
        };
        transporter.sendMail(mailOptions, function(error, resp){
          if(error) {
          }
          else{
            console.log("Message sent: " + resp.message);
          }
          transporter.close();
        });

当记录res.body时,我发现它存在。电子邮件已发送,我在收件箱中收到。但是电子邮件没有附件 - 它只是一个标准的文本电子邮件。我怎样才能让nodemailer发送我的遗产?

2 个答案:

答案 0 :(得分:0)

我明白了。当我使用0.7.1时,我正在查看nodemailer 2.0.0的文档。语法略有不同。

0.7.1: {fileName:“test.xlsx”, 内容:res.body}

2.0.0: {filename:“test.xlsx”, 内容:res.body}

答案 1 :(得分:0)

您可能还想指定内容类型。我可以为.xlsx找到的最好的是:

  {
    fileName: 'myFile.xlsx',
    content: req.body,
    contentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' 
  }