【发布时间】:2015-08-21 11:11:20
【问题描述】:
通过 SendGrid 发送事务性 API。我的模板(从 Mailchimp 移植过来)有条件(例如
*|IF:SHOWTHISSECTION|*
在 Mailchimp 语法中)。这包括或排除基于变量的模板部分。
我在 SendGrid 中找不到模拟,它根本就没有这个功能吗?我想根据替换变量的存在/不存在来抑制某些部分。
【问题讨论】:
标签: sendgrid
通过 SendGrid 发送事务性 API。我的模板(从 Mailchimp 移植过来)有条件(例如
*|IF:SHOWTHISSECTION|*
在 Mailchimp 语法中)。这包括或排除基于变量的模板部分。
我在 SendGrid 中找不到模拟,它根本就没有这个功能吗?我想根据替换变量的存在/不存在来抑制某些部分。
【问题讨论】:
标签: sendgrid
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/
【讨论】:
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 现在原生支持此功能:
{{#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
【讨论】:
{{#if count > 3}}的事情吗?
moreThanOne :) 来“解决”我的问题
#greaterThan 块。结帐here
我知道这是旧的,但我遇到了同样的问题,我找到了一个与多个电子邮件管理器兼容的解决方案,它可能对某人有帮助。
如果你想隐藏一个部分,你可以使用带有 html 注释符号值的替换标签。
{%OPEN_COMMENT}
<h1>Whatever section you want to hide</h1>
{%CLOSE_COMMENT}
如果要隐藏该部分,请分别用“”替换标签。在另一种情况下用空字符串替换它们。
【讨论】:
这是一个可怕的 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 字节,当您有数千或数万封邮件时,这是令人望而却步的。
【讨论】:
SendGrid 没有真正的条件,但它确实有Section Tags。有了这些,您可以在消息级别定义一个文本块(与 Substitution Tag 的不同收件人级别相反),然后根据需要为收件人调用相应的部分。
【讨论】:
SendGrid 模板不支持此功能,但您可以使用 sendwithus 之类的模板 API 在您的 SendGrid 帐户上完成此操作。我相信 sendwithus 支持jinja conditionals,因此您可以执行以下操作:
{% if variable %}
<h1>{{ variable }}</h1>
{% endif %}
【讨论】: