如何在SES模板中使用Handlebars实现可选条件内容?
AWS SES模板实现可选内容的解决方案
AWS SES的Handlebars模板引擎对未定义变量的处理较为严格,直接引用不存在的变量会触发渲染错误,导致邮件发送失败。针对你的问题,有几种可行的解决方法:
给可选变量设置默认空值
发送邮件时,在模板数据中显式包含所有可能用到的变量,即使没有实际值也设为空字符串或null。示例数据:{ "foo": "", "bar": "" }此时
{{#if foo}}会因空字符串判定为false,不会渲染对应段落,同时避免变量未定义的报错。使用
{{#with}}块处理可选变量{{#with}}块会在变量不存在时跳过内部内容,且不会触发报错。模板写法:{{#with foo}} <p>{{this}}</p> {{/with}} {{#with bar}} <p>{{this}}</p> {{/with}}这里
{{this}}指代当前块的变量值(即foo或bar),无需提前在数据中定义变量。嵌套对象场景的处理
如果你用data.foo这类嵌套变量,需确保外层对象存在,同时给内层变量设默认值,或用{{#with}}包裹外层对象:
模板写法:{{#with data}} {{#if foo}} <p>{{foo}}</p> {{/if}} {{#if bar}} <p>{{bar}}</p> {{/if}} {{/with}}对应传入的数据:
{ "data": { "foo": "", "bar": "" } }
内容的提问来源于stack exchange,提问作者patrick
相关产品推荐
相关产品推荐

