nodejs-authentication/app/v1/utils/email.js

77 lines
2.3 KiB
JavaScript

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: 'abc', // add user here
pass: 'xyz' // 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
}