Я использую узел - 10.14.1 и nodemailer - 4.7.0
Моя проблема заключается в том, что когда я отправляю однорядные данные из базы данных в приложении Excel, я могу получать почту с вложением, но когда я отправляю многострочные данные из базы данных в Excel как вложение, я получаю вложение с 0 байтами и все еще показываю загрузка под вложениями. У меня есть изображения также в файле. Где, поскольку я могу сгенерировать весь файл Excel успешно, но при прикреплении файла у меня происходит сбой .... Я также пытался с sendgrid, но столкнулся с той же проблемой ....
Может кто-нибудь помочь мне с моим кодом, где я ошибаюсь .....
Мой код -
exports.getExcelFile = (req, res, next) => {
const excelFile = {};
Order.findById(req.params.id).then(order => {
excelFile.excelOffFile = "Off_" + order.factory + "_" + order._id + ".xls";
excelFile.excelOffFilePath = path.join("data", "excel", excelFile.excelOffFile);
excelFile.excelFactFile = "Fact_" + order.factory + "_" + order._id + ".xls";
excelFile.excelFactFilePath = path.join("data", "excel", excelFile.excelFactFile);
excelFile.excelBrFile = "Br_" + order.factory + "_" + order._id + ".xls";
excelFile.excelBrFilePath = path.join("data", "excel", excelFile.excelBrFile);
excelFile.excelSuFile = "Su_" + order.factory + "_" + order._id + ".xls";
excelFile.excelSuFilePath = path.join("data", "excel", excelFile.excelSuFile);
let workbookFinal = createExcelFile(order, "C", excelFile.excelOffFilePath);
createExcelFile(order, "F", excelFile.excelFactFilePath);
createExcelFile(order, "B", excelFile.excelBrFilePath);
createExcelFile(order, "S", excelFile.excelSuFilePath);
res.setHeader("Content-Type", "application/vnd.ms-excel");
res.setHeader("Content-Disposition", "attachment;filename='" + excelFile.excelOffFile + "'");
workbookFinal.xlsx.write(res).then(() => {
res.end();
});
//-------- Sending Mail --------
transporter.sendMail({
from: defaultMailId,
to: config.get("mail.defaultAdd"),
subject: "Order with excel attachment send through software ",
html: `<h1>
The mail has been sent as trial through program for testing excel file attachement.
</h1>
<h3>
file 1- ${url.format({ protocol: req.protocol, host: req.get("host"), pathname: "orders/genExcelFile/" + excelFile.excelOffFile })}</br>
file 2- ${url.format({ protocol: req.protocol, host: req.get("host"), pathname: "orders/genExcelFile/" + excelFile.excelFactFile })}</br>
file 3- ${url.format({ protocol: req.protocol, host: req.get("host"), pathname: "orders/genExcelFile/" + excelFile.excelBrFile })}</br>
file 4- ${url.format({ protocol: req.protocol, host: req.get("host"), pathname: "orders/genExcelFile/" + excelFile.excelSuFile })}</br>
</h3>
`,
attachments: [
{
content: fs.readFileSync(excelFile.excelOffFilePath, { encoding: "base64" }),
filename: excelFile.excelOffFile,
type: "application/vnd.ms-excel"
},
{
content: fs.readFileSync(excelFile.excelFactFilePath, { encoding: "base64" }),
filename: excelFile.excelFactFile,
type: "application/vnd.ms-excel"
},
{
content: fs.readFileSync(excelFile.excelBrFilePath, { encoding: "base64" }),
filename: excelFile.excelBrFile,
type: "application/vnd.ms-excel"
},
{
path: excelFile.excelSuFilePath,
}
]
}, (err, info) => {
if (err) { return console.log(err); }
console.log("message Send");
});
}).catch(err => console.log(err));
};