Fix mail tracking bounce notification not logged

This is to resolve the following issue:

* https://github.com/OCA/social/issues/1121
pull/1367/head
Thierry Ducrest 2023-05-03 13:21:01 +02:00 committed by Pedro M. Baeza
parent 1260333caf
commit 4d6d8cbb17
3 changed files with 39 additions and 1 deletions

View File

@ -7,7 +7,7 @@
{
"name": "Email tracking",
"summary": "Email tracking system for all mails sent",
"version": "15.0.2.0.2",
"version": "15.0.2.0.3",
"category": "Social Network",
"website": "https://github.com/OCA/social",
"author": ("Tecnativa, " "Odoo Community Association (OCA)"),

View File

@ -44,6 +44,13 @@ class MailThread(models.AbstractModel):
)
return super()._message_route_process(message, message_dict, routes)
def _routing_handle_bounce(self, email_message, message_dict):
bounced_message = message_dict["bounced_message"]
if bounced_message.mail_tracking_ids:
# TODO detect hard of soft bounce
bounced_message.mail_tracking_ids.event_create("soft_bounce", message_dict)
return super()._routing_handle_bounce(email_message, message_dict)
def _message_get_suggested_recipients(self):
"""Adds email 'extra' recipients as suggested recipients.

View File

@ -590,3 +590,34 @@ class TestMailTracking(TransactionCase):
self.assertEqual(b"NONE", none.response[0])
none = controller.mail_tracking_event(db, "open")
self.assertEqual(b"NONE", none.response[0])
def test_bounce_tracking_event_created(self):
mail, tracking = self.mail_send(self.recipient.email)
message = self.env.ref("mail.mail_message_channel_1_1")
message.mail_tracking_ids = [(4, tracking.id, False)]
mail.mail_message_id = message
message_dict = {
"bounced_email": "test@test.net",
"bounced_message": message,
"bounced_msg_id": [message.message_id],
"bounced_partner": self.recipient,
"cc": "",
"date": "2023-02-07 12:35:53",
"email_from": "MAILER-DAEMON@eu-west-1.amazonses.com",
"from": "MAILER-DAEMON@eu-west-1.amazonses.com",
"in_reply_to": "<010201864d109aa7-west-1.amazonses.com>",
"is_internal": False,
"message_id": "<010201862be01f29-west-1.amazonses.com>",
"message_type": "email",
"parent_id": 15894917,
"partner_ids": [],
"recipients": "bounce+694942@recipient.net",
"references": "<010201862bdfa5e9-west-1.amazonses.com>",
"subject": "bounce notification",
"to": "bounce+694942-mailing.contact-836@test.net",
}
self.env["mail.thread"]._routing_handle_bounce(message, message_dict)
self.assertTrue(
"soft_bounce"
in message.mail_tracking_ids.tracking_event_ids.mapped("event_type")
)