#node.js #file #email #attachment #nodemailer
#node.js #файл #Адрес электронной почты #вложение #nodemailer
Вопрос:
Как я могу прикрепить файл, который я выбрал, используя тип ввода file?
<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
}]
};
Как я могу получить путь для включения во вложение?
Ответ №1:
Параметры вложения — это путь к файлу, поэтому я думаю, что вам нужно записать загруженный файл на диск, прежде чем прикреплять его к своей почте. Для этого вы можете использовать модуль 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
Ответ №2:
используйте этот код для извлечения массива файлов из объекта запроса, а затем передайте этот массив файлов в nodemailer в качестве вложений
var files = req.files;
const mailOptions = {
from: '****@gmail.com',
to: '*****@gmail.com',
subject: 'test',
text: 'test',
attachments: files
};