You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Odoo的action_confirm方法中调用自定义邮件模板发送邮件

前置修正:XML模板语法问题

你当前定义的邮件模板中email_from字段多了一个多余的左括号,会导致渲染报错,修正后对应行代码为:

<field name="email_from">${object.res_user_id.email}</field>

action_confirm方法调整

重写的action_confirm方法中加入邮件发送逻辑即可,完整代码如下:

@api.multi
def action_confirm(self):
    res = super(AsSaleOrder, self).action_confirm()
    # 遍历当前操作的所有销售订单实例
    for order in self:
        # 加载自定义邮件模板,替换「你的模块技术名」为存放该XML模板的模块实际技术名
        mail_template = self.env.ref('你的模块技术名.as_email_template')
        if mail_template:
            # 调用send_mail方法发送邮件,传入当前订单ID作为渲染上下文的object
            mail_template.send_mail(
                res_id=order.id,
                force_send=True,  # 设为False则进入邮件队列,待计划任务调度发送
                raise_exception=True  # 发送出错时抛出异常,方便调试,生产环境可按需关闭
            )
    return res

注意事项

  • ref方法的参数格式为「模块技术名.模板ID」,你在XML中定义的模板ID是as_email_template,必须前缀你自己模块的技术名才能正确加载到模板
  • 如果需要附加附件、动态修改邮件内容,可给send_mail方法传入email_values字典参数,覆盖对应字段值即可
  • 若不希望立即发送邮件,将force_send设为False即可,Odoo会通过后台计划任务批量发送队列邮件,适合高并发场景

内容的提问来源于stack exchange,提问作者Oscar Vardela

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 22:51:03