[FIX] mail_tracking_mailgun: alternative domain
- In case the sending domain is different from the one configured in the mail.domain.catchall setting.
This commit is contained in:
parent
bf4687c4bb
commit
85beba204f
@ -36,6 +36,8 @@ parameters:
|
|||||||
domain.
|
domain.
|
||||||
- `mailgun.api_url`: It should be fine as it is, but it could change in the
|
- `mailgun.api_url`: It should be fine as it is, but it could change in the
|
||||||
future.
|
future.
|
||||||
|
- `mailgun.domain`: In case your sending domain is different from the one
|
||||||
|
configured in `mail.catchall.domain`.
|
||||||
- `mailgun.validation_key`: If you want to be able to check mail address
|
- `mailgun.validation_key`: If you want to be able to check mail address
|
||||||
validity you must config this parameter with your account Public Validation
|
validity you must config this parameter with your account Public Validation
|
||||||
Key.
|
Key.
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
{
|
{
|
||||||
"name": "Mail tracking for Mailgun",
|
"name": "Mail tracking for Mailgun",
|
||||||
"summary": "Mail tracking and Mailgun webhooks integration",
|
"summary": "Mail tracking and Mailgun webhooks integration",
|
||||||
"version": "11.0.1.0.3",
|
"version": "11.0.1.1.2",
|
||||||
"category": "Social Network",
|
"category": "Social Network",
|
||||||
"website": "https://github.com/OCA/social",
|
"website": "https://github.com/OCA/social",
|
||||||
"author": "Tecnativa, "
|
"author": "Tecnativa, "
|
||||||
|
@ -14,25 +14,25 @@ msgstr ""
|
|||||||
"Plural-Forms: \n"
|
"Plural-Forms: \n"
|
||||||
|
|
||||||
#. module: mail_tracking_mailgun
|
#. module: mail_tracking_mailgun
|
||||||
#: code:addons/mail_tracking_mailgun/models/res_partner.py:88
|
#: code:addons/mail_tracking_mailgun/models/res_partner.py:89
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%s couldn't be verified. Either the request couln't be completed or the mailbox provider doesn't support email verification"
|
msgid "%s couldn't be verified. Either the request couln't be completed or the mailbox provider doesn't support email verification"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. module: mail_tracking_mailgun
|
#. module: mail_tracking_mailgun
|
||||||
#: code:addons/mail_tracking_mailgun/models/res_partner.py:78
|
#: code:addons/mail_tracking_mailgun/models/res_partner.py:79
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%s failed the mailbox verification. Please check it in order to avoid sending issues"
|
msgid "%s failed the mailbox verification. Please check it in order to avoid sending issues"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. module: mail_tracking_mailgun
|
#. module: mail_tracking_mailgun
|
||||||
#: code:addons/mail_tracking_mailgun/models/res_partner.py:69
|
#: code:addons/mail_tracking_mailgun/models/res_partner.py:70
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%s is not a valid email address. Please check it in order to avoid sending issues"
|
msgid "%s is not a valid email address. Please check it in order to avoid sending issues"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. module: mail_tracking_mailgun
|
#. module: mail_tracking_mailgun
|
||||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:75
|
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:76
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "A Mailgun domain value is needed!"
|
msgid "A Mailgun domain value is needed!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -53,7 +53,7 @@ msgid "Contact"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. module: mail_tracking_mailgun
|
#. module: mail_tracking_mailgun
|
||||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:238
|
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:240
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Couldn't retrieve Mailgun information"
|
msgid "Couldn't retrieve Mailgun information"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -67,13 +67,13 @@ msgid "Email has been bounced: %s\n"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. module: mail_tracking_mailgun
|
#. module: mail_tracking_mailgun
|
||||||
#: code:addons/mail_tracking_mailgun/models/res_partner.py:56
|
#: code:addons/mail_tracking_mailgun/models/res_partner.py:57
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Error %s trying to check mailof connection"
|
msgid "Error %s trying to check mailof connection"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. module: mail_tracking_mailgun
|
#. module: mail_tracking_mailgun
|
||||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:242
|
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:244
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Event information not longer stored"
|
msgid "Event information not longer stored"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -94,7 +94,7 @@ msgid "Mailgun"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. module: mail_tracking_mailgun
|
#. module: mail_tracking_mailgun
|
||||||
#: code:addons/mail_tracking_mailgun/models/res_partner.py:63
|
#: code:addons/mail_tracking_mailgun/models/res_partner.py:64
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Mailgun Error. Mailbox verification value wasn't returned"
|
msgid "Mailgun Error. Mailbox verification value wasn't returned"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -121,7 +121,7 @@ msgid "There is no Mailgun API key!"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. module: mail_tracking_mailgun
|
#. module: mail_tracking_mailgun
|
||||||
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:225
|
#: code:addons/mail_tracking_mailgun/models/mail_tracking_email.py:227
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "There is no tracked message!"
|
msgid "There is no tracked message!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -64,13 +64,14 @@ class MailTrackingEmail(models.Model):
|
|||||||
digestmod=hashlib.sha256).hexdigest()
|
digestmod=hashlib.sha256).hexdigest()
|
||||||
|
|
||||||
def _mailgun_values(self):
|
def _mailgun_values(self):
|
||||||
icp = self.env['ir.config_parameter']
|
icp = self.env['ir.config_parameter'].sudo()
|
||||||
api_key = icp.get_param('mailgun.apikey')
|
api_key = icp.get_param('mailgun.apikey')
|
||||||
if not api_key:
|
if not api_key:
|
||||||
raise ValidationError(_('There is no Mailgun API key!'))
|
raise ValidationError(_('There is no Mailgun API key!'))
|
||||||
api_url = icp.get_param(
|
api_url = icp.get_param(
|
||||||
'mailgun.api_url', 'https://api.mailgun.net/v3')
|
'mailgun.api_url', 'https://api.mailgun.net/v3')
|
||||||
domain = icp.get_param('mail.catchall.domain')
|
catchall_domain = icp.get_param('mail.catchall.domain')
|
||||||
|
domain = icp.get_param('mailgun.domain', catchall_domain)
|
||||||
if not domain:
|
if not domain:
|
||||||
raise ValidationError(_('A Mailgun domain value is needed!'))
|
raise ValidationError(_('A Mailgun domain value is needed!'))
|
||||||
validation_key = icp.get_param('mailgun.validation_key')
|
validation_key = icp.get_param('mailgun.validation_key')
|
||||||
@ -78,7 +79,8 @@ class MailTrackingEmail(models.Model):
|
|||||||
|
|
||||||
def _mailgun_signature_verify(self, event):
|
def _mailgun_signature_verify(self, event):
|
||||||
event = event or {}
|
event = event or {}
|
||||||
api_key = self.env['ir.config_parameter'].get_param('mailgun.apikey')
|
icp = self.env['ir.config_parameter'].sudo()
|
||||||
|
api_key = icp.get_param('mailgun.apikey')
|
||||||
if not api_key:
|
if not api_key:
|
||||||
_logger.warning("No Mailgun api key configured. "
|
_logger.warning("No Mailgun api key configured. "
|
||||||
"Please add 'mailgun.apikey' to System parameters "
|
"Please add 'mailgun.apikey' to System parameters "
|
||||||
|
@ -46,7 +46,8 @@ class ResPartner(models.Model):
|
|||||||
' in order to be able to check mails validity'))
|
' in order to be able to check mails validity'))
|
||||||
for partner in self.filtered('email'):
|
for partner in self.filtered('email'):
|
||||||
res = requests.get(
|
res = requests.get(
|
||||||
"%s/address/validate" % api_url,
|
# Validation API url is always the same
|
||||||
|
'https://api.mailgun.net/v3/address/validate',
|
||||||
auth=("api", validation_key), params={
|
auth=("api", validation_key), params={
|
||||||
"address": partner.email,
|
"address": partner.email,
|
||||||
"mailbox_verification": True,
|
"mailbox_verification": True,
|
||||||
|
@ -104,6 +104,11 @@ class TestMailgun(TransactionCase):
|
|||||||
self.test_event_delivered()
|
self.test_event_delivered()
|
||||||
with self.assertRaises(ValidationError):
|
with self.assertRaises(ValidationError):
|
||||||
self.env['mail.tracking.email']._mailgun_values()
|
self.env['mail.tracking.email']._mailgun_values()
|
||||||
|
# now we set an specific domain for Mailgun:
|
||||||
|
# i.e: we configure new EU zone without loosing old domain statistics
|
||||||
|
self.env['ir.config_parameter'].set_param(
|
||||||
|
'mailgun.domain', 'eu.example.com')
|
||||||
|
self.test_event_delivered()
|
||||||
|
|
||||||
@mute_logger('odoo.addons.mail_tracking_mailgun.models'
|
@mute_logger('odoo.addons.mail_tracking_mailgun.models'
|
||||||
'.mail_tracking_email')
|
'.mail_tracking_email')
|
||||||
@ -169,9 +174,10 @@ class TestMailgun(TransactionCase):
|
|||||||
response = self.env['mail.tracking.email'].event_process(
|
response = self.env['mail.tracking.email'].event_process(
|
||||||
None, self.event, self.metadata)
|
None, self.event, self.metadata)
|
||||||
self.assertEqual('OK', response)
|
self.assertEqual('OK', response)
|
||||||
event = self.event_search('delivered')
|
events = self.event_search('delivered')
|
||||||
self.assertEqual(event.timestamp, float(self.timestamp))
|
for event in events:
|
||||||
self.assertEqual(event.recipient, self.recipient)
|
self.assertEqual(event.timestamp, float(self.timestamp))
|
||||||
|
self.assertEqual(event.recipient, self.recipient)
|
||||||
|
|
||||||
# https://documentation.mailgun.com/user_manual.html#tracking-opens
|
# https://documentation.mailgun.com/user_manual.html#tracking-opens
|
||||||
def test_event_opened(self):
|
def test_event_opened(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user