diff options
| author | Nicolas Martinelli <nim@odoo.com> | 2018-08-10 15:00:08 +0200 |
|---|---|---|
| committer | Nicolas Martinelli <nim-odoo@users.noreply.github.com> | 2018-08-13 13:57:13 +0200 |
| commit | ea4502ceab1f76f9b83f0e35cd714a3c01b7dfac (patch) | |
| tree | ea2e4d8aca638623186e08f5d3ea69d8570a3dd8 /addons/mass_mailing/models/mail_thread.py | |
| parent | e1ff6ce3d927caf29f7f673f9b4bc404ec4bce59 (diff) | |
[FIX] mass_mailing: bounced statistics
A mass mailing can be considered both as bounced and opened. This can
occur with some email providers, such as Gmail. Indeed, Gmail sends
out-of-office replies to the `Return-Path` address, which is also used
for bounced emails. Therefore, it is not possible to determine
accurately if a message sent to to the `Return-Path` is a genuine
bounced email, or an out-of-office reply.
However, if the recipient opens the email, it is possible to determine
that the bounce was counted incorrectly. In this case, we empty the
`bounced` field. Similarly, we only write on the `bounced` filed if the
`opened` field is empty. This could occur if the recipient opens the
email before the out-of-office reply is received.
As a bonus, we also make sure to avoid updating the status if no route
was found. No route means that the email was bounced, so no reason to
set it as opened.
opw-1869957
Diffstat (limited to 'addons/mass_mailing/models/mail_thread.py')
| -rw-r--r-- | addons/mass_mailing/models/mail_thread.py | 2 |
1 files changed, 1 insertions, 1 deletions
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) |
