Выберите файл и затем отправьте его как вложение с помощью Nodemailer!Nodejs - PullRequest
0 голосов
/ 02 апреля 2019

Как я могу прикрепить файл, который я выбрал, используя тип файла ввода?

<form action="/upload" method="POST" enctype="multipart/form-data" >
      <div class="file-field input-field">
        <div class="btn grey">
          <span>File</span>
          <input name="myImage" type="file" multiple="multiple"> 
        </div>
        <div class="file-path-wrapper">
          <input class="file-path validate" type="text">
        </div>

      </div>      
      <button type="submit" class="btn">Submit</button>
    </form>

это код бэкэнда

var mailOptions = {
    from: '****@gmail.com',
    to: '*****@gmail.com',
    subject: 'test',
    text: 'test',
    attachments: [{        
         // how to get the path of the selected file
    }]
  };

Как мне получить путь для включения во вложение?

Ответы [ 2 ]

0 голосов
/ 02 апреля 2019

используйте этот код для извлечения массива файлов из объекта запроса, а затем передайте этот массив файлов в узел почты как вложения

    var files = req.files;
    const mailOptions = {
            from: '****@gmail.com',
            to: '*****@gmail.com',
            subject: 'test',
            text: 'test',
            attachments: files
        };
0 голосов
/ 02 апреля 2019

Параметры вложения - это путь к файлу, поэтому я думаю, что вы должны записать загруженный файл на диск, прежде чем прикреплять его к своей почте. Для этого вы можете использовать модуль nodejs fs.

const fs = require('fs').promises
...
fs.writeFile('/your/path/to/your/fs', fileContent)
    .then(res => {
        const mailOptions = {
            from: '****@gmail.com',
            to: '*****@gmail.com',
            subject: 'test',
            text: 'test',
            attachments: ['/path/to/your/fs']
        };

        // I suppose sendMail return a Promise here !
        return sendMail(mailOptions)
    }).then(_ => fs.unlink('path/to/your/fs'))
    // fs.unlink is here to delete the file because it is useless now
...