diff --git a/mail_tracking/__manifest__.py b/mail_tracking/__manifest__.py index a06b00179..3b1321622 100644 --- a/mail_tracking/__manifest__.py +++ b/mail_tracking/__manifest__.py @@ -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)"), diff --git a/mail_tracking/models/mail_thread.py b/mail_tracking/models/mail_thread.py index b263ab468..81149fb20 100644 --- a/mail_tracking/models/mail_thread.py +++ b/mail_tracking/models/mail_thread.py @@ -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. diff --git a/mail_tracking/tests/test_mail_tracking.py b/mail_tracking/tests/test_mail_tracking.py index c239aab24..f531362af 100644 --- a/mail_tracking/tests/test_mail_tracking.py +++ b/mail_tracking/tests/test_mail_tracking.py @@ -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") + )