Odoo13邮件模板中fields.Image字段图片无法显示排查求助
Odoo 13邮件模板中Image字段图片无法显示的排查与解决
原代码的核心问题
你直接拼接URL的方式不符合Odoo对Image字段的处理逻辑,/birthday_picture.png=%s不是Odoo认可的图片访问路径,且Image字段存储的是base64编码内容,无法直接通过这种方式解析。
两种可行的解决方法
方法一:使用Odoo内置的image_url工具函数
Odoo提供了专门生成图片访问URL的方法,能自动处理Image字段的存储逻辑,修改后的代码如下:
<div> <img src="${object.image_url('birthday_picture', 60)}" style="width: 60px; height: 60px"/><br/> </div>
- 第二个参数
60是图片的尺寸,可根据需求调整 - 注意:这种方式生成的URL依赖Odoo实例的可访问性,若邮件接收方无法访问你的Odoo部署地址,图片会无法加载
方法二:将base64内容转为Data URI嵌入邮件
如果想让图片直接嵌入邮件(无需依赖外部访问),可以把base64编码转为Data URI格式:
<div> <img src="data:image/png;base64,${object.birthday_picture}" style="width: 60px; height: 60px"/><br/> </div>
- 若图片是JPG格式,需将
image/png改为image/jpeg - 大图片可能导致邮件体积过大,部分邮箱服务商可能会限制这类邮件
额外排查点
- 验证字段值是否存在:在模板中临时添加
${object.birthday_picture},确认输出的是有效base64字符串 - 检查上下文对象:确保模板中的
object是正确的业务记录,没有出现上下文丢失或对象错误的情况 - 查看Odoo日志:若使用
image_url方法,检查是否有404或权限相关的错误日志,排查访问问题
内容的提问来源于stack exchange,提问作者Sidharth Panda
相关产品推荐
相关产品推荐

