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

Odoo VPS环境调用API发送采购订单邮件报错:记录不存在

问题分析与解决

你调用API发送采购订单邮件时出现「记录不存在」错误,核心原因是**mail.compose.message的action_send_mail方法需要传入的是该模型的记录ID,而非邮件模板ID或视图ID**。

手动发送时,Odoo会自动创建一个临时的mail.compose.message记录用于编辑邮件内容,而你的代码错误地将模板ID/视图ID传给了需要操作该临时记录的方法,自然找不到对应记录。

修正后的代码

# 调用action_rfq_send,获取邮件编辑弹窗对应的action数据
send_mail_action = models.execute_kw(
    db, uid, password,
    'purchase.order', 'action_rfq_send',
    [orderId],
    {'context': {'send_rfq': False}}
)

# 从返回的action中提取mail.compose.message的记录ID
compose_message_id = send_mail_action.get('res_id')
if compose_message_id:
    # 调用action_send_mail,传入正确的mail.compose记录ID
    models.execute_kw(
        db, uid, password,
        'mail.compose.message', 'action_send_mail',
        [[compose_message_id]]
    )

额外说明

  • action_rfq_send返回的是一个action字典,其中res_id就是Odoo自动创建的mail.compose.message临时记录ID,这才是action_send_mail需要的参数。
  • 确保调用时的用户权限足够,需要拥有采购订单邮件发送以及mail.compose.message的操作权限。
  • 如果仍然报错,可以检查send_mail_action的完整返回值,确认res_id是否正确生成,也可以先通过API查询mail.compose.message模型,验证临时记录是否存在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 08:12:44