SendGrid 模板引擎是否有条件?

Does SendGrid template engine have conditionals?

通过 SendGrid 发送事务性 API。我的模板(从 Mailchimp 移植过来)有条件(例如

*|IF:SHOWTHISSECTION|*

在 Mailchimp 语法中)。这包括或排除基于变量的模板部分。

我在SendGrid中找不到类比,是不是它根本就没有这个功能?我想根据替换变量的 presence/absence 来抑制某些部分。

SendGrid 模板不支持此功能,但您可以使用模板 API,例如 sendwithus to accomplish this on top of your SendGrid account. I believe sendwithus supports jinja conditionals,因此您可以执行以下操作:

{% if variable %}
    <h1>{{ variable }}</h1>
{% endif %}

SendGrid 没有真正的条件,但它有 Section Tags. With those, you can define a block of text at the message level (as opposed to the distinct recipient level of a Substitution Tag),然后根据需要为收件人调用适当的部分。

这是一个可怕的 hack,但通过引入新变量并使用 CSS,您可以使用 display 隐藏邮件的相关部分。所以之前在 Mandrill/MailChimp 我会有这样的东西:

    *|IF:FAKEVAR|* 
    <p>Show some text here</p>
    *|END:IF|*

而是引入一个新变量IF_FAKEVAR,其值是"none"或"inherit"取决于FAKEVAR是否有值,然后这样做:

<p style="display: *|IF_FAKEVAR|*">Show some text here</p>

虽然这是一个 hack,但对于非常复杂的电子邮件模板,它可以避免为每封电子邮件向服务器发送 70k 字节,而当您有数千封或数万封邮件时,这是令人望而却步的。

我知道这是旧的,但我遇到了同样的问题,我找到了一个与多个电子邮件管理器兼容的解决方案,可能对某些人有帮助。

如果您想隐藏某个部分,您可以使用带有 html 注释符号值的替换标签。

{%OPEN_COMMENT}
<h1>Whatever section you want to hide</h1>
{%CLOSE_COMMENT}

如果要隐藏该部分,请将标签分别替换为“”。在其他情况下将它们替换为空字符串。

SendGrid 现在原生支持:

{{#if user.profile.male}}
  <p>Dear Sir</p>
{{else if user.profile.female}}
  <p>Dear Madame</p>
{{else}}
  <p> Dear Customer</p>
{{/if}}

参考:https://sendgrid.com/docs/for-developers/sending-email/using-handlebars/#conditional-statements

Sendgrid 支持条件使用 Handlebar

{{#if user.profile.male}}
  <p>Dear Sir</p>
{{else if user.profile.female}}
  <p>Dear Madame</p>
{{else}}
  <p> Dear Customer</p>
{{/if}}

来自他们的文档https://sendgrid.com/docs/for-developers/sending-email/using-handlebars/#conditional-statements

可在 Sendgrid 动态模板中使用以下把手:

Conditional statements:
{{#if variable}}
{{#unless variable}}
{{#greaterThan variable value}}
{{#lessThan variable value}}
{{#equals variable value}}
{{#notEquals variable value}}
{{#and variable1 variable2}}
{{#or variable1 variable2}}

Looping statements:
{{#each hash}}

参考https://sendgrid.com/docs/for-developers/sending-email/using-handlebars/获取详细信息