UNPKG

gbox-notification

Version:

Email temaplates and notifications

144 lines (125 loc) 6.86 kB
let nodemailer = require('nodemailer'); const ejs = require('ejs'); const path = require('path'); module.exports = { sendEmail: async function (key, emails, language, data) { /* Generate template data by given key. * Key is given in documentation, language of requested template, * Data is also defined in documentation. * Option parameter custom object from sails. * */ let templateData = this.jsonKeys(key, language, data); /* Render data to html with ejs plugin. * templateData is object with all needed data for email content. * Render use sails custom object for logged user, company details, baseUrl... * */ let renderData = await this.renderEmail(templateData, data.apiData, language); /* If render data fail, don't try send mail * * renderData is content of email. * sails custom object needed for company information * emails is array of email-s. * title for email title * * */ if (renderData) { this.send(renderData, data.apiData, emails, templateData.title) } }, renderEmail: async function (tempData, apiData, language) { return await ejs.renderFile(path.join(__dirname, '../', 'template/content.ejs'), {tempData: tempData, apiData: apiData, language: language}) }, send: function (html, apiData, emails, title) { /* sails.config.emailConfig is required to be set*/ // TO DO SET CONFIG FUNCTION let transporter = nodemailer.createTransport({ host: sails.config.emailConfig.host, port: sails.config.emailConfig.port, secure: true, // true for 465, false for other ports auth: { user: sails.config.emailConfig.user, pass: sails.config.emailConfig.pass }, tls: { rejectUnauthorized: false } }); let mailOptions = { from: (apiData.name) ? apiData.name + " <service@gaussbox.net>" : "service@gaussbox.net", to: emails, // list of receivers subject: title, // Subject line text: '', // plain text body html: html // html body }; transporter.sendMail(mailOptions, function (err, info) { if (err) console.log("Check email service", err); }); }, jsonKeys: function (key, language, data) { if (!data.apiData.loggedUser) data.apiData.loggedUser = {} let keys = { eng: { user_create_send_password: { title: 'Account Created', message: `Hello <b> ${data.parent.displayName} </b>,<br> welcome to ${data.apiData.mainCompany.name}. Please use the password below and follow this <a href="${'https://' + data.apiData.subdomain + '.' + data.apiData.frontendUrl}">link</a> for login. `, caption: `For security reasons, please change your password in settings after login.`, option: {password: data.option.password} }, user_register: { title: 'Account Created', message: `Hello <b> ${data.parent.displayName} </b>,<br> welcome to ${data.apiData.mainCompany.name}. Please use the password below and follow this <a href="${'https://' + data.apiData.subdomain + '.' + data.apiData.frontendUrl}">link</a> for login. `, caption: `For security reasons, please change your password in settings after login.`, option: {password: data.option.password} }, reset_password: { title: 'Reset password', message: ` Dear user <strong> ${data.parent.displayName}</strong>,<br> you have submitted a request for reset password. Please follow the link to complete the process <a href="${'https://' + data.apiData.subdomain + '.' + data.apiData.frontendUrl + data.option.resetUrl}">LINK</a>`, caption: ``, option: {} }, company_created: { title: 'New company created', message: ` Dear user,<br> New company ${data.parent.name} has been created by ${data.apiData.loggedUser.displayName}. `, caption: ``, option: {} } }, hrv: { user_create_send_password: { title: 'Kreiran račun', message: `Pozdrav <strong> ${data.parent.displayName} </strong>,<br> dobro došao u ${data.apiData.mainCompany.name}. Upotrijebite lozinku u nastavku i slijedite ovaj <a href="${'https://' + data.apiData.subdomain + '.' + data.apiData.frontendUrl}">link</a> za prijavu. `, caption: `Iz sigurnosnih razloga promijenite zaporku u postavkama nakon prijave.`, option: {password: data.option.password} }, user_register: { title: 'Kreiran račun', message: `Pozdrav <strong> ${data.parent.displayName} </strong>,<br> dobro došao u ${data.apiData.mainCompany.name}. Upotrijebite lozinku u nastavku i slijedite ovaj <a href="${'https://' + data.apiData.subdomain + '.' + data.apiData.frontendUrl}">link</a> za prijavu. `, caption: `Iz sigurnosnih razloga promijenite zaporku u postavkama nakon prijave.`, option: {password: data.option.password} }, reset_password: { title: 'Resetiranje lozinke', message: ` Dragi korisniče <strong> ${data.parent.displayName}</strong>,<br> podnijeli ste zahtjev za poništavanje zaporke. Slijedite link kako biste dovršili postupak <a href="${'https://' + data.apiData.subdomain + '.' + data.apiData.frontendUrl + data.option.resetUrl}" target="_blank">LINK</a>`, caption: ``, option: {} }, company_created: { title: 'Nova tvrtka kreirana', message: ` Pozdrav,<br> Nova tvrtka ${data.parent.name} je kreirana od korisnika ${data.apiData.loggedUser.displayName}. `, caption: ``, option: {} } } }; return keys[language][key]; }, };