diff --git a/core/server/services/bulk-email/index.js b/core/server/services/bulk-email/index.js new file mode 100644 index 0000000000..9db4819e0f --- /dev/null +++ b/core/server/services/bulk-email/index.js @@ -0,0 +1,36 @@ +// @ts-check +const mailService = require('../mail'); +const ghostMailer = new mailService.GhostMailer(); + +/* + * An email address + * @typedef { string } EmailAddress + */ + +/* + * An object representing an email to send + * @typedef { Object } Email + * @property { string } html - The html content of the email + */ + +module.exports = { + /** + * @param {Email} message - The message to send + * @param {[EmailAddress]} recipients - the recipients to send the email to + * @returns {Promise} A promise representing the success of the email sending + */ + async send(message, recipients) { + for (const recipient in recipients) { + const messageToSend = Object.assign({}, message, { + to: recipient + }); + try { + await ghostMailer.send(messageToSend); + } catch (err) { + // @TODO log this somewhere with state? + console.log(`Oh no! an email failed to send :( ${recipient}`); + } + } + return true; + } +};