diff --git a/server/lib/message-sender.js b/server/lib/message-sender.js index 7fcbd9ee..8d59e677 100644 --- a/server/lib/message-sender.js +++ b/server/lib/message-sender.js @@ -682,7 +682,7 @@ async function queueCampaignMessageTx(tx, sendConfigurationId, listId, subscript }); } -async function queueAPITransactionalMessage(sendConfigurationId, email, subject, html, text, tagLanguage, mergeTags, attachments) { +async function queueAPITransactionalMessage(tx, sendConfigurationId, email, subject, html, text, tagLanguage, mergeTags, attachments) { const msgData = { to: { address: email diff --git a/server/models/templates.js b/server/models/templates.js index 209e1635..1d7fb6f4 100644 --- a/server/models/templates.js +++ b/server/models/templates.js @@ -163,13 +163,15 @@ async function remove(context, id) { } async function sendAsTransactionalEmail(context, templateId, sendConfigurationId, emails, subject, mergeTags, attachments) { - const template = await getById(context, templateId, false); + await knex.transaction(async tx => { + const template = await getById(context, templateId, false); - await shares.enforceEntityPermission(context, 'sendConfiguration', sendConfigurationId, 'sendWithoutOverrides'); + await shares.enforceEntityPermission(context, 'sendConfiguration', sendConfigurationId, 'sendWithoutOverrides'); - for (const email of emails) { - await messageSender.queueAPITransactionalMessage(sendConfigurationId, email, subject, template.html, template.text, template.tag_language, {...mergeTags, EMAIL: email }, attachments); - } + for (const email of emails) { + await messageSender.queueAPITransactionalMessage(tx, sendConfigurationId, email, subject, template.html, template.text, template.tag_language, {...mergeTags, EMAIL: email }, attachments); + } + }); }