- Add support for welcome email on user creation (both OAuth and password users) - Add support for html/text templating on verify email. - Add support for html/text templating on reset password. - Add handlers for converting Handlebars templates to HTML and text (template agnostic). - Add helper function sendEmail() for compiling and sending templates via Email.send() (SMTP).
26 lines
987 B
JavaScript
26 lines
987 B
JavaScript
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';
|
|
|
|
const sendEmail = (options, { resolve, reject }) => {
|
|
try {
|
|
Meteor.defer(() => Email.send(options));
|
|
if (callback) resolve();
|
|
} catch (exception) {
|
|
reject(exception);
|
|
}
|
|
};
|
|
|
|
export default ({ text, html, template, templateVars, ...rest }, callback) => {
|
|
if (text || html || template) {
|
|
return new Promise((resolve, reject) => {
|
|
sendEmail({
|
|
...rest,
|
|
text: template ? templateToText(getPrivateFile(`email-templates/${template}.txt`), (templateVars || {})) : text,
|
|
html: template ? templateToHTML(getPrivateFile(`email-templates/${template}.html`), (templateVars || {})) : html,
|
|
}, { resolve, reject });
|
|
});
|
|
}
|
|
throw new Error('Please pass an HTML string, text, or template name to compile for your message\'s body.');
|
|
};
|