@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
JavaScript
;
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}`);
}
}
},
};