Odoo 从采购订单通过 API 发送邮件:记录不存在

问题描述 投票:0回答:1

在 vps 上运行 odoo。

我尝试使用以下方式从经过验证的采购订单发送邮件:

sendMail = models.execute_kw(db, uid, password, 'purchase.order', 'action_rfq_send',[orderId],{'context' : {'send_rfq': False}})

models.execute_kw(db, uid, password, 'mail.compose.message', 'action_send_mail',[[sendMail['context']['default_template_id']]])

邮件配置并在手动触发时工作

我得到这些输出:

第一个块是 sendMail 方法的输出打印

第二块是后面的 xmlrpc action_send_mail 的输出。

我一定是在 sendMail 或 action_send_mail 中缺少一个参数,但我找不到哪个。我也试过用 view_id 替换 default_template_id :

models.execute_kw(db, uid, password, 'mail.compose.message', 'action_send_mail',[[sendMail['context']['view_id']]])
odoo xml-rpc
1个回答
0
投票

可以通过 xml-rpc 使用邮件向导,但我不会使用它。

但是报错如下。您正在尝试使用邮件向导的

action_send_mail
,它需要当前向导 ID。但是您提供的
[sendMail['context']['view_id']]
(或
default_template_id
)不是巫师 ID。

action_send_mail
的方法
purchase.order
以字典的形式返回一个动作。 odoo 窗口动作字典中唯一包含动作底层模型的实际 ID 的键/值对是
res_id
,在这种情况下,它从来没有。那是因为Odoo为浏览器客户端做了那个方法...

那么你可以做什么呢?首先,您应该查看

action_send_mail
以了解在那里完成了什么以及您可以使用哪些值。浏览器和向导有很多东西。但是对于 xml-rpc 只有两件事是真正必要的:订单 ID 和邮件模板 ID。

您的示例代码中已经有了订单 ID

orderId
。对于 Odoo 15,向导使用了两个邮件模板。让我们坚持使用 xml id
purchase.email_template_edi_purchase
的那个,稍后将在我的示例代码中使用它。

您现在可以使用 Odoo 的邮件模板功能使用两个 ID 发送邮件。

以下代码适用于 Odoo 15,可能不适用于旧版本。

# first get mail template id (either by xml id or you could hardcode it, but that's ugly)
mail_template_xml_id = "purchase.email_template_edi_purchase"
module, xml_id_name = mail_template_xml_id.split(".")
template_model, template_id = models.execute_kw(
    db, uid, password, 'ir.model.data',
    'check_object_reference',
    [module, xml_id_name])
# send the mail by template
models.execute_kw(db, uid, password, template_model,
    'send_mail',
    [template_id, orderId])
© www.soinside.com 2019 - 2024. All rights reserved.