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: