77 lines
2.3 KiB
JavaScript
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: '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
|
|
} |