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/获取详细信息
通过 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/获取详细信息