You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python MJML转换后Outlook无法渲染背景图问题求助

Outlook中MJML转换后的背景图片无法渲染的解决办法

核心原因

Outlook桌面版采用Word渲染引擎,存在两个关键限制:

  • 不支持SVG格式作为背景图,仅兼容JPG/PNG位图;
  • 不支持CSS的background系列属性(如background-position、background-repeat),需用VML(Vector Markup Language)实现复杂背景效果。

具体解决步骤

1. 转换背景图格式

将原SVG背景图导出为PNG或JPG格式,确保图片尺寸和显示效果符合需求。

2. 修改MJML代码,使用mj-background组件

MJML的mj-background组件会自动生成Outlook兼容的VML代码,替换直接在mj-section中设置背景的写法:

<mj-section
    padding-top="0px"
    padding-right="25px"
    padding-bottom="0px"
    padding-left="25px"
    background-color="#f7f7f7"
>
    <mj-background
        background-position="bottom right"
        background-url="{{ static_url }}images/email_result_summry_bg.png"
        background-repeat="no-repeat"
    >
        <!-- 此处放置section内的原有内容 -->
    </mj-background>
</mj-section>

3. 手动补充VML代码(若MJML自动生成不完整)

如果转换后的HTML缺少针对Outlook的VML块,可手动在对应表格中添加以下代码(替换图片地址、尺寸和背景色):

<table align="center" border="0" cellpadding="0" cellspacing="0" role="presentation" style="width:100%;">
    <!--[if gte mso 9]>
    <v:rect fill="t" stroke="f" style="width:600px;height:auto;">
        <v:fill type="frame" src="https://purple.insightloupe.com/static/images/email_result_summry_bg.png" color="#f7f7f7" />
        <v:textbox inset="0,0,0,0">
    <![endif]-->
    <tr>
        <td style="padding:0 25px; background-color:#f7f7f7;">
            <!-- 插入邮件内容 -->
        </td>
    </tr>
    <!--[if gte mso 9]>
        </v:textbox>
    </v:rect>
    <![endif]-->
</table>
  • v:fill的type="frame"对应no-repeat效果,type="tile"对应重复背景;
  • width需设置为邮件容器的实际宽度(如示例中的600px);
  • color设置背景色作为图片加载失败的降级方案。

4. 验证渲染效果

转换后检查HTML代码,确认包含<!--[if gte mso 9]>包裹的VML块,可使用邮件测试工具验证Outlook中的显示效果。

内容的提问来源于stack exchange,提问作者sandeep pathak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 11:49:52