UNPKG

express-demo

Version:

Express app demo. With social login, i18n, unit test, create doc, minify files, check format and syntax.

63 lines (51 loc) 2.02 kB
/** * Emailjs module. * @module util/emailjs */ const fs = require('fs'); const path = require('path'); const emailjs = require("emailjs"); const htmlToText = require('html-to-text'); const server = emailjs.server.connect(PER.config.email); const dirTemplate = path.join(PER.config.app.views, 'email'); const emailSignUp = PER.config.app.name + ' <' + PER.config.email.signup + '>'; const _getTemplate = template => { return fs.readFileSync(path.join(dirTemplate, template), 'utf8'); }; const header = PER.helper.ejsRender(_getTemplate('header.ejs')); const _render = (template, data) => { const footer = PER.helper.ejsRender(_getTemplate('footer.ejs'), {i18n: data.i18n}); return header + PER.helper.ejsRender(_getTemplate(template + '.ejs'), data) + footer; }; const _send = (template, subject, from, user, req, callback) => { const i18n = req.app.locals.i18n; const html = _render(template, {user: user, i18n: i18n, url: PER.helper.getBaseUrl(req)}); return server.send({ text: htmlToText.fromString(html), from: from, to: user.email, subject: i18n[subject], attachment: [{data: html, alternative: true}] }, callback); }; const sendWelcome = (user, req, callback) => { return _send('welcome', '_accountCreated', emailSignUp, user, req, callback); }; const sendConfirmAccount = (user, req, callback) => { return _send('confirm_account', '_confirmYourAccount', emailSignUp, user, req, callback); }; const sendPasswordReset = (user, req, callback) => { return _send('reset_password', '_resetYourPassword', emailSignUp, user, req, callback); }; const sendPasswordResetSuccess = (user, req, callback) => { return _send( 'reset_password_success', '_resetPasswordSuccess', emailSignUp, user, req, callback ); }; module.exports = { sendWelcome: sendWelcome, sendPasswordReset: sendPasswordReset, sendPasswordResetSuccess: sendPasswordResetSuccess, sendConfirmAccount: sendConfirmAccount };