web-dev-qa-db-ja.com

SendGridテンプレートエンジンには条件がありますか?

SendGridを介してトランザクションAPIを送信します。私のテンプレート(Mailchimpから移植されたもの)には条件があります(例:.

*|IF:SHOWTHISSECTION|*

mailchimp構文で)。これには、変数に基づいてテンプレートのセクションが含まれるか、除外されます。

SendGridでアナログが見つかりません。単にこの機能がないのですか?置換変数の有無に応じて、特定のセクションを抑制したいのですが。

14
Mark Watkins

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

8
rothschild86

これは恐ろしいハックですが、新しい変数を導入してCSSを使用することで、displayを使用してメールの関連部分を非表示にすることができます。したがって、以前はMandrill/MailChimpのどこに、次のようなものがありました。

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

代わりに、新しい変数IF_FAKEVARを導入します。この変数の値は、FAKEVARに値があるかどうかに応じて、「none」または「inherit」のいずれかになります。次に、次のようにします。

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

これはハックですが、非常に複雑な電子メールテンプレートの場合、1通の電子メールごとに7万バイトをサーバーに送信することを回避します。これは、数千または数万のメールがある場合、法外なことです。

6
Mark Watkins

私はこれが古いことを知っていますが、同じ問題があり、誰かに役立つかもしれないいくつかの電子メールマネージャーと互換性のある解決策を見つけました。

セクションを非表示にする場合は、htmlコメントシンボル値で置換タグを使用できます。

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

セクションを非表示にする場合は、タグをそれぞれ「」に置き換えます。それ以外の場合は、空の文字列に置き換えてください。

2
Paco

SendGridテンプレートはこれをサポートしていませんが、 sendwithus のようなテンプレートAPIを使用して、SendGridアカウント上でこれを実現できます。 sendwithusは jinja条件付き をサポートしていると思うので、次のことができます。

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

SendGridには真の条件はありませんが、 セクションタグ があります。これらを使用すると、( 置換タグ の個別の受信者レベルではなく)メッセージレベルでテキストのブロックを定義し、必要に応じて受信者の適切なセクションを呼び出すことができます。

2
jacobmovingfwd

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

0
kheengz