dry-node
Version:
Initialiseur de structure Node Express typée et modulaire
83 lines (69 loc) • 2.13 kB
JavaScript
const nodemailer = require('nodemailer');
const hbs = require('nodemailer-express-handlebars');
const DryGeneratePdf = require("../../dry-core/dry-functions/dry-generate-pdf.function");
const DrySendEmailAdvanced = async options => {
/**
* 1. template
* 2. ViewEngine
* 3.
*/
//1. transporter
const transporter = nodemailer.createTransport({
host: process.env.SMTP_HOST,
port: process.env.SMTP_PORT,
secure: process.env.SMTP_SECURE,
auth: {
user: process.env.SMTP_EMAIL,
pass: process.env.SMTP_PASSWORD
}
});
//2. viewEngine
transporter.use('compile', hbs({
viewEngine: {
extname: '.handlebars',
layoutsDir: './views/',
defaultLayout: 'default', //change
},
viewPath: './views/'
}));
let attachments = [];
//3. generate pdf
let filesJoin = [];
const resPdfCreator = await DryGeneratePdf({
html: "",
data: "",
nameFile: "",
header: "",
}).then((res)=>{
});
filesJoin.push(resPdfCreator);
filesJoin.forEach(el=>{
let at = {
'path' : process.env.PATH_ENV_USE+'pdfs/'+el.fileDownload,
'filename' : el.fileDownload
};
attachments.push(at);
});
const message = {
from: `${process.env.FROM_NAME} <${process.env.FROM_EMAIL}>`,
to: options.email,
subject: options.subject,
text: options.message,
attachments: attachments,
template: options.template,
context: {
title: options.subject,
msg: options.msg,
name:name,
yearNow:new Date().getFullYear(),
data: options.data
}
};
try {
const info = await transporter.sendMail(message);
} catch (err) {
return err
// res.status(200).json({success: true, data: "ValidCode"});
}
};
module.exports = DrySendEmailAdvanced;