diff --git a/addons/mass_mailing/models/mailing.py b/addons/mass_mailing/models/mailing.py index e88fb9e6fad..526c52b5a10 100644 --- a/addons/mass_mailing/models/mailing.py +++ b/addons/mass_mailing/models/mailing.py @@ -933,9 +933,13 @@ class MassMailing(models.Model): mails_sudo = self.env['mail.mail'].sudo() for mailing in self: - user = mailing.user_id - mailing = mailing.with_context(lang=user.lang or self._context.get('lang')) + if mailing.user_id: + mailing = mailing.with_user(mailing.user_id).with_context( + lang=mailing.user_id.lang or self._context.get('lang') + ) mailing_type = mailing._get_pretty_mailing_type() + mail_user = mailing.user_id or self.env.user + mail_company = mail_user.company_id link_trackers = self.env['link.tracker'].search( [('mass_mailing_id', '=', mailing.id)] @@ -953,8 +957,8 @@ class MassMailing(models.Model): 'digest.digest_mail_main', { 'body': tools.html_sanitize(link_trackers_body), - 'company': user.company_id, - 'user': user, + 'company': mail_company, + 'user': mail_user, 'display_mobile_banner': True, ** mailing._prepare_statistics_email_values() }, @@ -966,15 +970,17 @@ class MassMailing(models.Model): ) mail_values = { + 'auto_delete': True, + 'author_id': mail_user.partner_id.id, + 'email_from': mail_user.email_formatted, + 'email_to': mail_user.email_formatted, + 'body_html': full_mail, + 'reply_to': mail_company.email_formatted or mail_user.email_formatted, + 'state': 'outgoing', 'subject': _('24H Stats of %(mailing_type)s "%(mailing_name)s"', mailing_type=mailing._get_pretty_mailing_type(), mailing_name=mailing.subject ), - 'email_from': user.email_formatted, - 'email_to': user.email_formatted, - 'body_html': full_mail, - 'auto_delete': True, - 'state': 'outgoing', } mails_sudo += self.env['mail.mail'].sudo().create(mail_values) return mails_sudo diff --git a/addons/test_mail_full/tests/test_mass_mailing_statistics.py b/addons/test_mail_full/tests/test_mass_mailing_statistics.py index 8a3f67ae0eb..45f0dc134bc 100644 --- a/addons/test_mail_full/tests/test_mass_mailing_statistics.py +++ b/addons/test_mail_full/tests/test_mass_mailing_statistics.py @@ -7,7 +7,7 @@ from odoo.addons.mail.tests.common import mail_new_test_user from odoo.addons.test_mail_full.tests.test_mass_sms import TestMassSMSCommon from odoo.tests.common import users from odoo.tests import tagged -from odoo.tools import formataddr, mute_logger +from odoo.tools import mute_logger @tagged('digest', 'mass_mailing') @@ -53,10 +53,10 @@ class TestMailingStatistics(TestMassSMSCommon): self.assertEqual(len(self._new_mails), 1, "Mailing: a mail should have been created for statistics") mail = self._new_mails[0] # test email values - self.assertEqual(mail.author_id, self.user_marketing.partner_id) + self.assertEqual(mail.author_id, self.user_marketing_2.partner_id) self.assertEqual(mail.email_from, self.user_marketing_2.email_formatted) self.assertEqual(mail.email_to, self.user_marketing_2.email_formatted) - self.assertEqual(mail.reply_to, formataddr((self.company_admin.name, '%s@%s' % (self.alias_catchall, self.alias_domain)))) + self.assertEqual(mail.reply_to, self.company_admin.partner_id.email_formatted) self.assertEqual(mail.state, 'outgoing') # test body content: KPIs body_html = html.fromstring(mail.body_html) diff --git a/addons/test_mass_mailing/tests/test_mailing_statistics.py b/addons/test_mass_mailing/tests/test_mailing_statistics.py index 629b14658ef..fdc5b866b2e 100644 --- a/addons/test_mass_mailing/tests/test_mailing_statistics.py +++ b/addons/test_mass_mailing/tests/test_mailing_statistics.py @@ -8,7 +8,7 @@ from odoo.addons.test_mass_mailing.data.mail_test_data import MAIL_TEMPLATE from odoo.addons.test_mass_mailing.tests.common import TestMassMailCommon from odoo.tests.common import users from odoo.tests import tagged -from odoo.tools import formataddr, mute_logger +from odoo.tools import mute_logger @tagged('digest') @@ -59,10 +59,10 @@ class TestMailingStatistics(TestMassMailCommon): self.assertEqual(len(self._new_mails), 1, "Mailing: a mail should have been created for statistics") mail = self._new_mails[0] # test email values - self.assertEqual(mail.author_id, self.user_marketing.partner_id) + self.assertEqual(mail.author_id, self.user_marketing_2.partner_id) self.assertEqual(mail.email_from, self.user_marketing_2.email_formatted) self.assertEqual(mail.email_to, self.user_marketing_2.email_formatted) - self.assertEqual(mail.reply_to, formataddr((self.company_admin.name, '%s@%s' % (self.alias_catchall, self.alias_domain)))) + self.assertEqual(mail.reply_to, self.company_admin.partner_id.email_formatted) self.assertEqual(mail.state, 'outgoing') # test body content: KPIs body_html = html.fromstring(mail.body_html) @@ -93,7 +93,7 @@ class TestMailingStatistics(TestMassMailCommon): mail = self._new_mails[0] # test email values self.assertEqual(mail.author_id, self.user_marketing.partner_id) - self.assertFalse(mail.email_from) - self.assertFalse(mail.email_to) - self.assertEqual(mail.reply_to, formataddr((self.company_admin.name, '%s@%s' % (self.alias_catchall, self.alias_domain)))) + self.assertEqual(mail.email_from, self.user_marketing.email_formatted) + self.assertEqual(mail.email_to, self.user_marketing.email_formatted) + self.assertEqual(mail.reply_to, self.company_admin.partner_id.email_formatted) self.assertEqual(mail.state, 'outgoing')