UNPKG

@bn-digital/strapi-plugin-email-emitter

Version:

Strapi plugin to send emails based on entity lifecycle or schedule rules

62 lines (61 loc) 2.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const constants_1 = require("../../constants"); exports.default = { beforeCreate(event) { event.params.data.publishedAt = null; event.params.data.status = null; }, beforeUpdate(event) { if (!event.params.data.publishedAt) { event.params.data.status = null; } }, async afterUpdate({ result }) { var _a, _b, _c, _d; const emailProvider = strapi.plugin('email').provider; const emailDesignerEmailService = strapi.plugin('email-designer').services.email; const entityService = strapi.entityService; const emailConfig = strapi.config.get('plugin.email').settings; const email = await entityService.findOne(constants_1.contentTypeUIDs.email, result.id, { populate: 'template', }); const to = (_a = email.email) !== null && _a !== void 0 ? _a : emailConfig.defaultReplyTo; const from = emailConfig.defaultFrom; if (!email.delivered && email.publishedAt) { try { const response = await (!email.template ? emailProvider.send({ to, from, replyTo: to, body: JSON.stringify((_b = email.payload) !== null && _b !== void 0 ? _b : {}), }, {}, (_c = email.payload) !== null && _c !== void 0 ? _c : {}) : emailDesignerEmailService.sendTemplatedEmail({ to, from, replyTo: to, }, { templateReferenceId: email.template.templateReferenceId, subject: email.template.subject, }, (_d = email.payload) !== null && _d !== void 0 ? _d : {})).then((result) => result === null || result === void 0 ? void 0 : result.response); const delivered = response.startsWith('250'); if (delivered) { } else { strapi.log.error(`[email] Email #${email.id} was not delivered. Reason: ${response}`); } strapi.log.info(`[email] Email #${email.id} was sent successfully to ${to}`); await entityService.update(constants_1.contentTypeUIDs.email, email.id, { data: { delivered, email: to, publishedAt: new Date(), log: response }, }); } catch (e) { await entityService.update(constants_1.contentTypeUIDs.email, email.id, { data: { delivered: false, email: to, publishedAt: new Date(), log: e.message }, }); strapi.log.error(`[email] Failed to find template for email #${email.id}`); } } }, };