odoo 在创建电子邮件模板时给出使用 email.template 的解析错误

odoo gives parse error on using email.template while creating email template

我想在 odoo 中创建电子邮件模板。我的代码如下,

<?xml version="1.0" encoding="UTF-8"?>
<openerp>
    <data>    
      <record id="room_request_approval" model="email.template">
            <field name="name">Approval Notification</field>
            <field name="email_from">${object.users_company.email}</field>
            <field name="subject">Room request approved</field>
            <field name="email_to" >${object.assignee.email}</field>
            <field name="auto_delete" eval="True"/>
            <field name="model_id" ref="model_request_room"/>
            <field name="body_html"><![CDATA[
                <html>
                    <head>
                        <title>Room Request Approved</title>
                        <style> 
                            span.oe_mail_footer_access {
                                display:block;    
                                text-align:center;
                                color:grey;                                
                            }
                        </style>
                    </head>
                    <body>
                       <p>Hiii</p>
                    </body>
                </html>
                ]]>
            </field>
        </record>

报错如下,ParseError: "email.template" while parsing file

您是否检查过问题是否出在 body_html 字段内?尝试使用更简单的方法,如下所示,并将 safe 添加到电子邮件中:

<?xml version="1.0" encoding="UTF-8"?>
<openerp>
    <data>    
      <record id="room_request_approval" model="email.template">
            <field name="name">Approval Notification</field>
            <field name="email_from">${(object.users_company.email or '')|safe}</field>
            <field name="subject">Room request approved</field>
            <field name="email_to" >${(object.assignee.email or '')|safe}</field>
            <field name="auto_delete" eval="True"/>
            <field name="model_id" ref="model_request_room"/>
            <field name="body_html"><![CDATA[
<p>Hello!</p>]]></field>
        </record>
    </data>
</openerp>

我猜你的模型名为 request.room,它有两个 Many2one 字段,名为 users_companyassignee,不是吗?

并且在 Python 代码中,您应该有这样的东西来发送邮件:

request_room_recordset = self.env['request.room'].search(
    whatever_domain).ensure_one()
et_pool = self.pool.get('email.template')
mail_sent = et_pool.send_mail(
    self.env.cr, 1, template.id, request_room_recordset.id,
    force_send=True, context=self.env.context)

尝试在 openerp.py 中添加 'email_template' 依赖项。希望有用。