UNPKG

valence-test

Version:

Test applications running in Valence and 5250 screens with Fusion5250

106 lines (93 loc) 3.01 kB
/** * Utility to send emails using nodemailer * - https://nodemailer.com/about/ */ "use strict"; const nodemailer = require('nodemailer'), config = require('../config.json'), helper = require(`${__dirname}/helper`), ip = require('ip'); class Email { constructor() { let me = this; me.transporter = null; } /** * createTransporter - create the required transporter that will be used for emails * @returns {*} */ createTransporter() { let me = this; if (helper.isEmpty(me.transporter)) { return nodemailer.createTransport({ host : config.email.host, port : config.email.port, secure : config.email.secure, auth : { user : config.email.user, pass : config.email.pwd }, tls : { // do not fail on invalid certs // rejectUnauthorized : config.email.rejectUnauthorized }, secureConnection : config.email.secureConnection, logger : (!helper.isEmpty(config.email.logger)) ? config.email.logger : false }); } else { return me.transporter; } } /** * send - send email * @param options * - from * - to * - subject * - etc... */ send(resultsFolder, success, test) { let me = this, successMsg = (!helper.isEmpty(success) && success) ? 'Successful' : 'Failed'; let emailOps = { from : config.email.to, to : config.email.to, subject : `${config.email.subject} [${successMsg}]` }; if (!helper.isEmpty(test) && test) { Object.assign(emailOps, { html : 'Test Email' }); } else { Object.assign(emailOps, { html : `<a href="http://${ip.address()}:${config.port}/${resultsFolder}/mochawesome.html">Report</a>` }); } if (!helper.isEmpty(config.email.cc)) { Object.assign(emailOps, { cc : config.email.cc }); } if (!helper.isEmpty(config.email.bc)) { Object.assign(emailOps, { bc : config.email.bc }); } return new Promise((resolve, reject) => { try { let transporter = me.createTransporter(); transporter.sendMail(emailOps, (error, info) => { if (error) { reject(error); } else { resolve(info); } }); } catch (e) { reject(e); } }); } }; module.exports = new Email;