todos-contra-el-fuego-web/imports/modules/server/send-email.js
2018-01-22 22:37:52 +01:00

43 lines
1.7 KiB
JavaScript

import { Meteor } from 'meteor/meteor';
// import { Email } from 'meteor/email';
import getPrivateFile from './get-private-file';
import templateToText from './handlebars-email-to-text';
import templateToHTML from './handlebars-email-to-html';
import { getFileNameOfLang } from '/imports/api/Utility/server/files.js';
import sendMail from '/imports/startup/server/email';
import i18n from 'i18next';
const sendEmail = (options, { resolve, reject }) => {
try {
Meteor.defer(() => {
// Meteor email options:
// basic: from, to/cc/bcc/replyTo, subject, html, text,
// others: watchHtml, icalEvent, headers, attachments, mailComposer, inReplyTo, references, messageId
const opts = options;
// opts.template = '<body><h2>{{appName}}</h2>{{{html}}}</body>';
opts.template = '<body>{{{html}}}</body>';
opts.appName = i18n.t('AppName');
// console.log(`Email options: ${JSON.stringify(opts)}`);
sendMail(opts, true);
// Email.send(options);
resolve();
});
} catch (exception) {
reject(exception);
}
};
export default ({
text, html, lang, template, templateVars, ...rest
}) => {
if (text || html || template) {
return new Promise((resolve, reject) => {
sendEmail({
...rest,
text: template ? templateToText(getPrivateFile(getFileNameOfLang('email-templates', template, 'txt', lang)), (templateVars || {})) : text,
html: template ? templateToHTML(getPrivateFile(getFileNameOfLang('email-templates', template, 'html', lang)), (templateVars || {})) : html
}, { resolve, reject });
});
}
throw new Error('Please pass an HTML string, text, or template name to compile for your message\'s body.');
};