如何在 odoo 中使用 message_post_with_template 功能发送邮件

How do I send mail with message_post_with_template function in odoo

我有一个在调用时发送群发邮件的函数,它在 odoo 13 中工作,但是当移植到 odoo 12 时,该函数给出了一个错误

AtributeError: 'hr.payslip' object has no attribute 'message_post_with_template'

这是错误来源的模型和函数。

class HREmailPayslip(models.TransientModel):
    _name = 'hr.payslip.email.wizard'
    _description = 'Payslip email Wizard'

    message = fields.Text()
    payslip_ids = fields.Many2many('hr.payslip')

    def action_do_email_send(self):
        context = dict(self._context or {})
        payslip_ids = self.env['hr.payslip'].browse(context.get('active_ids'))
        template_id = self .env.ref('hr_payslip_email.email_template_send_payslip')
        # force_send=False: odoo will put it in queue (default)
        for p in payslip_ids.filtered(lambda r: r.state == 'done'):
            # mail = template_id.send_mail(p.id, force_send=False)
            p.message_post_with_template(template_id=template_id.id)
        return {'type': 'ir.actions.act_window_close'}

在 odoo 13 中,message_post_with_template 函数正常工作,但在 odoo 12 中,它表示该模型没有该函数,所以我检查了 13 的 hr.payslip 模型以检查它是否具有该函数它没有,但不知何故它仍然有效,但对于 odoo 12 不是这样。可能有什么问题,我如何在 odoo 12 中实现这一点?

所以我发现在odoo 12 hr.payslip中没有继承mail.thread mixin class,所以我只好在我的inherited hr.payslip class中继承通过

class HrPayslip(models.Model):
    _name = 'hr.payslip'
    # _inherit = 'hr.payslip'
    _inherit = ['hr.payslip', 'mail.thread']