linagora-rse
Version:
58 lines (45 loc) • 1.21 kB
JavaScript
;
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;
});
}