Nodemailer передает вложенный файл

Я пытаюсь отправить файл, который запускается при выполнении запроса на получение. Я считаю, что содержимое файла - это 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 отправить мое обращение?


person Alex Beam    schedule 07.01.2016    source источник
comment
в res.body какие данные вы получаете   -  person arjun kori    schedule 07.01.2016
comment
Лог res.body выглядит так: ‹Buffer 50 4b 03 04 14 00 08 08 08 00 e1 46 27 48 00 00 00 00 00 00 00 00 00 00 00 00 17 00 00 00 78 6c 2f 77 6b 72 62 6 68 65 65 74 73 2f 73 68 65 65 74 2e ... ›   -  person Alex Beam    schedule 07.01.2016
comment
Я попытался использовать пример из документации nodemailer: {имя файла: 'text1.txt', содержимое: 'привет, мир!' } но я также получаю электронное письмо без вложений. Это кажется странным.   -  person Alex Beam    schedule 07.01.2016


Ответы (2)


Я понял. Я просматривал документацию для nodemailer 2.0.0, когда использую 0.7.1. Синтаксис немного другой.

0.7.1: {имя файла: "test.xlsx", содержимое: res.body }

2.0.0: {имя файла: "test.xlsx", содержимое: res.body }

person Alex Beam    schedule 07.01.2016

Вы также можете указать тип контента. Лучшее, что я смог найти для .xlsx, было следующим:

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