Odoo 16默认邮件样式修改遇阻:RTL失效及样式添加求助
解决Odoo 16邮件样式修改的两个常见问题
问题1:RTL文本方向发送后被删除
Odoo邮件发送时的HTML净化机制会过滤全局属性或非内联的direction设置,解决步骤:
- 关闭HTML净化:打开对应邮件模板的设置,找到「净化HTML」(Purify HTML)选项并取消勾选,这样自定义的
dir属性或direction样式不会被自动清理。注意仅在自己编写安全HTML的场景下使用。 - 强制内联样式:不要仅在
<body>标签设置RTL,给所有内容容器(如<div>、<table>)添加内联样式:
内联样式的优先级更高,被过滤的概率更低。<div style="direction: rtl; text-align: right; unicode-bidi: embed;"> <!-- 邮件内容 --> </div>
问题2:销售订单确认邮件样式被清除
Odoo的邮件系统会统一注入全局样式,同时清理非白名单内的样式属性,解决方法:
- 通过模块继承模板并添加内联样式:创建自定义模块,继承销售订单确认邮件模板(
sale.email_template_confirmation),用XPath定位需要修改的容器,添加内联样式:<template id="custom_sale_confirmation_style" inherit_id="sale.email_template_confirmation"> <xpath expr="//table[@class='oe_mail_notification']" position="attributes"> <attribute name="style">direction: rtl; background-color: #f8f9fa;</attribute> </xpath> </template> - 使用Odoo允许的样式属性:避免使用
position、float等可能被过滤的属性,优先使用color、background-color、padding、direction、text-align等白名单内的样式。 - 禁用全局样式注入(可选):如果需要完全自定义样式,可在模块中重写邮件发送的逻辑,跳过Odoo的全局样式注入,但此方法需谨慎操作,避免影响其他邮件样式。
内容的提问来源于stack exchange,提问作者Mohammad Saeedian
相关产品推荐
相关产品推荐

