def message_route(self,
                      message,
                      message_dict,
                      model=None,
                      thread_id=None,
                      custom_values=None):
        """ Override to udpate mass mailing statistics based on bounce emails """
        bounce_alias = self.env['ir.config_parameter'].sudo().get_param(
            "mail.bounce.alias")
        email_to = decode_message_header(message, 'To')
        email_to_localpart = (tools.email_split(email_to)
                              or [''])[0].split('@', 1)[0].lower()

        if bounce_alias and bounce_alias in email_to_localpart:
            bounce_re = re.compile(
                "%s\+(\d+)-?([\w.]+)?-?(\d+)?" % re.escape(bounce_alias),
                re.UNICODE)
            bounce_match = bounce_re.search(email_to)
            if bounce_match:
                bounced_mail_id = bounce_match.group(1)
                self.env['mail.mail.statistics'].set_bounced(
                    mail_mail_ids=[bounced_mail_id])

        return super(MailThread,
                     self).message_route(message, message_dict, model,
                                         thread_id, custom_values)
Beispiel #2
0
 def _alias_check_contact(self, message, message_dict, alias):
     if alias.alias_contact == 'employees' and self.ids:
         email_from = tools.decode_message_header(message, 'From')
         email_address = tools.email_split(email_from)[0]
         employee = self.env['hr.employee'].search([('work_email', 'ilike', email_address)], limit=1)
         if not employee:
             employee = self.env['hr.employee'].search([('user_id.email', 'ilike', email_address)], limit=1)
         if not employee:
             return {
                 'error_message': 'restricted to employees',
                 'error_template': self.env.ref('hr.mail_template_data_unknown_employee_email_address').body_html,
             }
         return True
     return super(MailAlias, self)._alias_check_contact(message, message_dict, alias)
Beispiel #3
0
 def _alias_get_error_message(self, message, message_dict, alias):
     if alias.alias_contact == 'employees':
         email_from = tools.decode_message_header(message, 'From')
         email_address = tools.email_split(email_from)[0]
         employee = self.env['hr.employee'].search(
             [('work_email', 'ilike', email_address)], limit=1)
         if not employee:
             employee = self.env['hr.employee'].search(
                 [('user_id.email', 'ilike', email_address)], limit=1)
         if not employee:
             return _('restricted to employees')
         return False
     return super(BaseModel,
                  self)._alias_get_error_message(message, message_dict,
                                                 alias)