Sendgrid-nodejs: node.jsを使用してテンプレートで置換を行う方法

作成日 2016年11月30日  ·  13コメント  ·  ソース: sendgrid/sendgrid-nodejs

問題の概要

sendgridをnode.jsアプリと統合するためにAPI3を使用しています。 基本的なメールは機能しましたが、テンプレート内の特定のものをデータに置き換える必要があります。 以下は私が電子メールを送信するために使用しているコードです。電子メールは送信されますが、置換は機能しません。

var sg = require('sendgrid')('API-KEY');

    var request = sg.emptyRequest();
    request.body = {
        "from": {
            "email": "[email protected]",
            "name": "Admin"
        },
        "personalizations" : [
            {
                "to": [
                    {
                        "email": recepientEmail,
                        "name": "User"
                    }
                ]
            }
        ],
        "subject": "This is subject",
        "template_id": "template-id-here",
        "substitution": {
            "-sub1-": ["This is the new substitured text"],
            "-sub2-": ["Substitured text"]
        }
    };
    request.method = 'POST';
    request.path = '/v3/mail/send';

    sg.API(request, function(error, response) {
        console.log(response.statusCode)
        console.log(response.body)
        console.log(response.headers)
    });

技術的な詳細:

  • sendgrid-nodejsバージョン:マスター(最新のコミット:[コミット番号])
  • Node.jsバージョン:4.1.2
question

最も参考になるコメント

@thinkingseriousによって言及された上記のURLhttps

全てのコメント13件

こんにちは@ neeraj87

これらの例がお役に立てば幸いです: https

これらで問題が発生した場合はお知らせください。 ありがとう!

こんにちは@ neeraj87

単純に、JSON構造は正しくありません。

置換は、パーソナライズ配列の内部にある必要があります。 このようにして、人ごとに異なる置換を定義できます。

また、置換配列の名前(キー)は、置換の置換、値は文字列でなければなりません。 配列ではありません。

"substitutions": { "-sub1-": "This is the new substitured text", "-sub2-": "Substitured text" }

@thinkingseriousドキュメントへのリンクをありがとう、それは

@alperenozlu回答ありがとう

@thinkingserious 1つの簡単な質問、変数を使用してタグを

var request = sg.emptyRequest();
    request.body = {
        "from": {
            "email": "[email protected]",
            "name": "Admin"
        },
        "personalizations" : [
            {
                "to": [
                    {
                        "email": recepientEmail,
                        "name": userNameVariable
                    }
                ],
                "substitution": {
                    "-sub1-": variableB,
                    "-sub2-": variableA
                }
            }
        ],
        "subject": "This is subject",
        "template_id": "template-id-here"
    };
    request.method = 'POST';
    request.path = '/v3/mail/send';

    sg.API(request, function(error, response) {
        console.log(response.statusCode)
        console.log(response.body)
        console.log(response.headers)
    });

これは私が得るエラーです

400
{エラー:[{メッセージ: '不正なリクエスト'、フィールド:null、ヘルプ:null}]}
{サーバー: 'nginx'、
日付: '2016年12月1日木曜日07:08:51GMT'、
'content-type': 'application / json'、
'content-length': '63'、
接続: 'キープアライブ'}

こんにちは@ neeraj87

変数の型を確認してください。型は文字列である必要があります。 また、置換への置換のキーを変更してください。

@alperenozluそうです、置換の1つは整数でした。 文字列に変換して動作します。

助けてくれてありがとう。

こんにちはみんな!
文字列だけでなく、値の配列で置換するにはどうすればよいですか?

@Deniscappを使用すると、配列要素を読み取り、それらを連結して文字列を形成できます。

@ neeraj87それが私がしたことです! しかし、私は彼らがどういうわけかこの機能を追加したのだろうかと思っていました。
答えてくれてありがとう! :)

@Deniscappおっと、それを知りませんでした。 古いバージョンだったと思います。 たぶん、SendGridの「公式」の誰かがこれに答えることができます。

@ Deniscapp 、@ neeraj87

APIドキュメントから:

パターン「substitution_tag」:「置換する値」に従うキーと値のペアのコレクション。 すべて文字列と見なされます。 これらの置換は、件名と返信先のパラメーターに加えて、電子メールの本文のテキストとhtmlコンテンツに適用されます。

ライブラリで配列を許可し、それらを連結してバックグラウンドで文字列を形成すると便利な場合があります。

@thinkingseriousによって言及された上記のURLhttps

ありがとう@vaskort!

元のコメントのリンクを更新しました。

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

agostonbonomi picture agostonbonomi  ·  3コメント

amlcodes picture amlcodes  ·  4コメント

nicoasp picture nicoasp  ·  3コメント

thinkingserious picture thinkingserious  ·  4コメント

murphman300 picture murphman300  ·  4コメント