import nodemailer from 'nodemailer' import sendmailTransport from 'nodemailer-sendmail-transport' import { getJob } from '.' /** * Default logger options * @type {Object} */ const defaults = { transport: sendmailTransport(), mail: { from: 'Dispo ' } } /** * Mailer */ export default class Mailer { /** * Creates an instance of Mailer. * * @memberOf Mailer * @param {Object} [config={}] */ constructor (config) { this.config = Object.assign({}, defaults, config) } /** * Initializes a nodemailer transport * * @memberOf Mailer * @return {Promise} */ init () { this._mailer = nodemailer.createTransport(this.config.transport) } async sendMail (job, message) { const { data: { notifyOnError, name }, id } = await getJob(job) if (!notifyOnError) return this._mailer.sendMail(Object.assign({}, this.config.mail, { to: notifyOnError, subject: `Job "${name}" (id ${id}) failed`, text: `Job "${name}" (id ${id}) failed\n\n${message}` })) } }