diff --git a/addons/mass_mailing/models/mail_thread.py b/addons/mass_mailing/models/mail_thread.py
index 75f70f273fa..6ed94ba6b76 100644
--- a/addons/mass_mailing/models/mail_thread.py
+++ b/addons/mass_mailing/models/mail_thread.py
@@ -3,9 +3,8 @@
import logging
import re
-import datetime
-from odoo import api, models, tools, fields
+from odoo import api, models, tools
from odoo.tools import decode_smtp_header, decode_message_header
_logger = logging.getLogger(__name__)
diff --git a/addons/mass_mailing/models/mass_mailing_stats.py b/addons/mass_mailing/models/mass_mailing_stats.py
index 062c29543ee..3a2d4da527d 100644
--- a/addons/mass_mailing/models/mass_mailing_stats.py
+++ b/addons/mass_mailing/models/mass_mailing_stats.py
@@ -56,7 +56,6 @@ class MailMailStats(models.Model):
state_update = fields.Datetime(compute="_compute_state", string='State Update',
help='Last state update of the mail',
store=True)
- recipient = fields.Char(compute="_compute_recipient")
email = fields.Char(string="Recipient email address")
@api.depends('sent', 'opened', 'clicked', 'replied', 'bounced', 'exception', 'ignored')
@@ -78,20 +77,6 @@ class MailMailStats(models.Model):
else:
stat.state = 'outgoing'
- def _compute_recipient(self):
- for stat in self:
- if stat.model not in self.env:
- continue
- target = self.env[stat.model].browse(stat.res_id)
- if not target or not target.exists():
- continue
- email = ''
- for email_field in ('email', 'email_from'):
- if email_field in target and target[email_field]:
- email = ' <%s>' % target[email_field]
- break
- stat.recipient = '%s%s' % (target.display_name, email)
-
@api.model
def create(self, values):
if 'mail_mail_id' in values:
diff --git a/addons/mass_mailing/views/mass_mailing_stats_views.xml b/addons/mass_mailing/views/mass_mailing_stats_views.xml
index a547d79f03b..8de9c2975ec 100644
--- a/addons/mass_mailing/views/mass_mailing_stats_views.xml
+++ b/addons/mass_mailing/views/mass_mailing_stats_views.xml
@@ -35,7 +35,7 @@
mail.mail.statistics
-
+
@@ -58,7 +58,7 @@
-
+
diff --git a/addons/mass_mailing/wizard/mail_compose_message.py b/addons/mass_mailing/wizard/mail_compose_message.py
index 737485978d8..782d7641190 100644
--- a/addons/mass_mailing/wizard/mail_compose_message.py
+++ b/addons/mass_mailing/wizard/mail_compose_message.py
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models, tools
+from odoo.tools import email_re
class MailComposeMessage(models.TransientModel):
@@ -65,7 +66,8 @@ class MailComposeMessage(models.TransientModel):
else:
recips = tools.email_split(partners_email.get(res_id))
mail_to = recips[0].lower() if recips else False
- if (opt_out_list and mail_to in opt_out_list) or (seen_list and mail_to in seen_list):
+ if (opt_out_list and mail_to in opt_out_list) or (seen_list and mail_to in seen_list) \
+ or (not mail_to or not email_re.findall(mail_to)):
# prevent sending to blocked addresses that were included by mistake
mail_values['state'] = 'cancel'
elif seen_list is not None: