valence-test
Version:
Test applications running in Valence and 5250 screens with Fusion5250
106 lines (93 loc) • 3.01 kB
JavaScript
/**
* Utility to send emails using nodemailer
* - https://nodemailer.com/about/
*/
;
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;