Merge branch 'pull/528' into development-tb

This commit is contained in:
Tomas Bures 2019-05-19 22:22:29 +02:00
commit bbbe671d59
2 changed files with 38 additions and 3 deletions

View file

@ -391,6 +391,7 @@ class CampaignSender {
let status;
let response;
let responseId;
try {
const info = await mailer.sendMassMail(mail);
status = SubscriptionStatus.SUBSCRIBED;
@ -407,6 +408,7 @@ class CampaignSender {
console.log(`response: ${info.response} messageId: ${info.messageId}`);
response = info.response || info.messageId;
responseId = info.messageId.replace(/(^<|>$)/g, "") || response.split(/\s+/).pop();
await knex('campaigns').where('id', campaign.id).increment('delivered');
} catch (err) {
@ -415,8 +417,6 @@ class CampaignSender {
await knex('campaigns').where('id', campaign.id).increment('delivered').increment('bounced');
}
const responseId = response.split(/\s+/).pop();
const now = new Date();
if (campaign.type === CampaignType.REGULAR || campaign.type === CampaignType.RSS_ENTRY) {

View file

@ -254,4 +254,39 @@ router.postAsync('/zone-mta/sender-config/:sendConfigurationCid', async (req, re
});
});
router.postAsync('/postal', async (req, res) => {
if (typeof req.body === 'string') {
req.body = JSON.parse(req.body);
}
switch (req.body.event) {
case 'MessageDeliveryFailed':
if (req.body.payload.message && req.body.payload.message.message_id) {
const message = await campaigns.getMessageByResponseId(req.body.payload.message.message_id);
if (message) {
await campaigns.changeStatusByMessage(contextHelpers.getAdminContext(), message, SubscriptionStatus.BOUNCED, req.body.payload.status === 'HardFail');
log.verbose('Postal', 'Marked message %s as bounced', req.body.payload.message.message_id);
}
}
break;
case 'MessageBounced':
if (req.body.payload.original_message && req.body.payload.original_message.message_id) {
const message = await campaigns.getMessageByResponseId(req.body.payload.original_message.message_id);
if (message) {
await campaigns.changeStatusByMessage(contextHelpers.getAdminContext(), message, SubscriptionStatus.BOUNCED, true);
log.verbose('Postal', 'Marked message %s as bounced', req.body.payload.original_message.message_id);
}
}
break;
}
res.json({
success: true
});
});
module.exports = router;