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
相关产品推荐
相关产品推荐

