UNPKG

linagora-rse

Version:
58 lines (45 loc) 1.21 kB
'use strict'; const Q = require('q'); const esnConfig = require('../esn-config')('mail'); const mailSenderBuilder = require('./mail-sender'); module.exports = { getMailer, mailSenderBuilder, system: require('./system') }; function getMailer(user) { const mailSenderPromise = getMailSender(user); return { send: send.bind(null, 'send'), sendHTML: send.bind(null, 'sendHTML') }; function send(type) { const args = Array.prototype.slice.call(arguments, 1); let callback = args.length ? args[args.length - 1] : null; if (typeof callback !== 'function') { callback = null; } return mailSenderPromise .then(mailSender => Q.npost(mailSender, type, args)) .then(data => { callback && callback(null, data); return data; }) .catch(err => { callback && callback(err); return Q.reject(err); }); } } function getMailSender(user) { return getMailConfig(user).then(mailSenderBuilder); } function getMailConfig(user) { return esnConfig.forUser(user).get() .then(data => { if (!data) { return Q.reject(new Error('mail is not configured')); } return data; }); }