const nodemailer = require('nodemailer'); var fs = require('fs'); var handlebars = require('handlebars'); const path = require("path"); //const transport = fs.readFileSync(path.resolve(__dirname, './files/secret-email.key'), { encoding: 'utf-8' }); const transport = { host: 'sandbox.smtp.mailtrap.io', port: 587, secure: false, // true for 465, false for other ports auth: { user: '1fa2f34cd54db1', // add user here pass: '17ce8c3ba5fd65' // add password here } } async function readHTMLFile(path) { return fs.readFileSync(path, { encoding: 'utf-8' }); ; }; async function passwordEmail(from, to, replacements) { var subject = 'nodejs-simple-authentication: Recuperar a password'; var receivers = to.replace(/\"/g, ""); let transporter = nodemailer.createTransport(transport); var html = await readHTMLFile(__dirname + '/templates/template.html'); var template = handlebars.compile(html); var htmlToSend = template(replacements); let info = await transporter.sendMail({ from: from, to: receivers, subject: subject, html: htmlToSend }); return info; } async function register(from, to, replacements) { var subject = 'nodejs-simple-authentication: registado com sucesso 🚀'; var receivers = to.replace(/\"/g, ""); let transporter = nodemailer.createTransport(transport); var html = await readHTMLFile(__dirname + '/templates/template-register.html'); var template = handlebars.compile(html); var htmlToSend = template(replacements); let info = await transporter.sendMail({ from: from, to: receivers, subject: subject, html: htmlToSend }); return info; } async function emailOptions(mailOptions) { var subject = mailOptions.sub; var receivers = mailOptions.to.replace(/\"/g, ""); let transporter = nodemailer.createTransport(transport); var html = await readHTMLFile(__dirname + '/templates/template-site.html'); var template = handlebars.compile(html); var htmlToSend = template(mailOptions); let info = await transporter.sendMail({ from: mailOptions.from, to: receivers, subject: subject, html: htmlToSend }); return info; } module.exports = { passwordEmail, register, emailOptions }