diff --git a/addons/mass_mailing/models/mail_thread.py b/addons/mass_mailing/models/mail_thread.py index 8e4ee298c67..f26aee7ff4a 100644 --- a/addons/mass_mailing/models/mail_thread.py +++ b/addons/mass_mailing/models/mail_thread.py @@ -35,7 +35,7 @@ class MailThread(models.AbstractModel): """ Override to update the parent mail statistics. The parent is found by using the References header of the incoming message and looking for matching message_id in mail.mail.statistics. """ - if message.get('References'): + if message.get('References') and routes: message_ids = [x.strip() for x in decode_smtp_header(message['References']).split()] self.env['mail.mail.statistics'].set_opened(mail_message_ids=message_ids) self.env['mail.mail.statistics'].set_replied(mail_message_ids=message_ids) diff --git a/addons/mass_mailing/models/mass_mailing_stats.py b/addons/mass_mailing/models/mass_mailing_stats.py index 91648f22d35..ed4b493e57a 100644 --- a/addons/mass_mailing/models/mass_mailing_stats.py +++ b/addons/mass_mailing/models/mass_mailing_stats.py @@ -106,7 +106,7 @@ class MailMailStats(models.Model): def set_opened(self, mail_mail_ids=None, mail_message_ids=None): statistics = self._get_records(mail_mail_ids, mail_message_ids, [('opened', '=', False)]) - statistics.write({'opened': fields.Datetime.now()}) + statistics.write({'opened': fields.Datetime.now(), 'bounced': False}) return statistics def set_clicked(self, mail_mail_ids=None, mail_message_ids=None): @@ -120,6 +120,7 @@ class MailMailStats(models.Model): return statistics def set_bounced(self, mail_mail_ids=None, mail_message_ids=None): - statistics = self._get_records(mail_mail_ids, mail_message_ids, [('bounced', '=', False)]) + statistics = self._get_records( + mail_mail_ids, mail_message_ids, [('bounced', '=', False), ('opened', '=', False)]) statistics.write({'bounced': fields.Datetime.now()}) return statistics