SendGrid模板引擎有条件吗?

时间:2015-06-06 15:25:15

标签: sendgrid

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

  

*|IF:SHOWTHISSECTION|*

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

我在SendGrid中找不到模拟器,它是不是没有这个功能?我想根据替换变量的存在/不存在来抑制某些部分。

7 个答案:

答案 0 :(得分:6)

这是一个可怕的黑客,但通过引入新变量和使用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>

虽然对于非常复杂的电子邮件模板来说这是一个黑客攻击,但它避免了为每封电子邮件向服务器发送70k字节,当你有数千或数万封邮件时,它是禁止的。

答案 1 :(得分:3)

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/ui/sending-email/using-handlebars/#conditional-statements

答案 2 :(得分:2)

SendGrid模板不支持此功能,但您可以使用sendwithus之类的模板API在SendGrid帐户之上完成此操作。我相信sendwithus支持jinja conditionals,因此您可以执行以下操作:

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

答案 3 :(得分:2)

SendGrid没有真正的条件,但确实有Section Tags。有了这些,您可以在消息级别定义一个文本块(而不是Substitution Tag的不同收件人级别),然后根据需要为接收者调用适当的部分。

答案 4 :(得分:2)

我知道这已经过时了,但我遇到了同样的问题,我发现了一个与多个电子邮件管理员兼容的解决方案,可能对某人有帮助。

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

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

如果要隐藏该部分,请分别用“”替换标签。在另一种情况下,用空字符串替换它们。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

下面的把手可以在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/