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

Mailjet模板变量未定义时条件判断报错求助

问题:Mailjet模板条件图片渲染发送时报错

我在Mailjet中制作带图片的页脚组件,需要实现两种图片展示逻辑:

  • 使用已定义的sender_image变量作为图片源
  • 当sender_image变量未定义时,使用备用图片

我编写了如下代码:

<table align="center" width="100%">
  <tr>
    <th>
      <div style="margin: 16px auto; text-align: center;">
        {% set image = var:sender_image:"N/A" %}
        {% if image != "N/A" %}
            <img src="{{image}}" style="max-width:120px;margin:0 auto;">
        {% else %}
            <img src="https://link_to_the_image.de/image.png" style="max-width:120px;margin:0 auto;">
        {% endif %}
      </div>
    </th>
  </tr>
</table>

这段代码在Mailjet预览中能正常运行(两种情况均符合预期),但发送邮件时出现如下错误:

A template language occurred when sending a message using Template 4935390: unknown node ## near ## voir
SET IMAGE ##

我参考过相关方案并多次重构代码,但问题仍未解决。请问我哪里操作有误?


解答

你的问题出在Mailjet模板语言的变量赋值语法上,{% set image = var:sender_image:"N/A" %}这种写法不符合Mailjet的规范——虽然预览环境能临时解析,但实际发送时的模板引擎会判定这是语法错误,从而抛出异常。

推荐两种符合官方规范的修正写法:

方案一:直接判断变量是否存在

<table align="center" width="100%">
  <tr>
    <th>
      <div style="margin: 16px auto; text-align: center;">
        {% if var:sender_image %}
            <img src="{{var:sender_image}}" style="max-width:120px;margin:0 auto;">
        {% else %}
            <img src="https://link_to_the_image.de/image.png" style="max-width:120px;margin:0 auto;">
        {% endif %}
      </div>
    </th>
  </tr>
</table>

方案二:使用default过滤器简化代码

<table align="center" width="100%">
  <tr>
    <th>
      <div style="margin: 16px auto; text-align: center;">
        <img src="{{var:sender_image|default('https://link_to_the_image.de/image.png')}}" style="max-width:120px;margin:0 auto;">
      </div>
    </th>
  </tr>
</table>

Mailjet的模板引擎在处理set语句时,不支持var:varname:"default"这种嵌套语法,预览环境和实际发送引擎的解析逻辑存在差异,才导致了“预览正常但发送报错”的情况。改用上述两种写法即可解决问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 15:10:18