const Promise = require('bluebird'); const i18n = require('../../../shared/i18n'); const mailService = require('../../services/mail'); const api = require('./'); let mailer; let _private = {}; _private.sendMail = (object) => { if (!(mailer instanceof mailService.GhostMailer)) { mailer = new mailService.GhostMailer(); } return mailer.send(object.mail[0].message).catch((err) => { if (mailer.state.usingDirect) { api.notifications.add( { notifications: [{ type: 'warn', message: [ i18n.t('warnings.index.unableToSendEmail'), i18n.t('common.seeLinkForInstructions', {link: 'https://ghost.org/docs/concepts/config/#mail'}) ].join(' ') }] }, {context: {internal: true}} ); } return Promise.reject(err); }); }; module.exports = { docName: 'mail', send: { permissions: true, query(frame) { return _private.sendMail(frame.data); } }, sendTest(frame) { return mailService.utils.generateContent({template: 'test'}) .then((content) => { const payload = { mail: [{ message: { to: frame.user.get('email'), subject: i18n.t('common.api.mail.testGhostEmail'), html: content.html, text: content.text } }] }; return _private.sendMail(payload); }); } };