Sendgrid-nodejs: So ersetzen Sie eine Vorlage mit node.js

Erstellt am 30. Nov. 2016  ·  13Kommentare  ·  Quelle: sendgrid/sendgrid-nodejs

Problemzusammenfassung

Ich verwende API 3 zur Integration von sendgrid in meine node.js-App. Ich habe die grundlegende E-Mail zum Laufen gebracht, muss aber bestimmte Dinge in der Vorlage durch Daten ersetzen. Unten ist der Code, den ich zum Senden von E-Mails verwende. Die E-Mail geht aus, aber die Ersetzungen funktionieren nicht.

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)
    });

Technische Details:

  • sendgrid-nodejs Version: master (letztes Commit: [Commit-Nummer])
  • Node.js Version: 4.1.2
question

Hilfreichster Kommentar

Alle 13 Kommentare

Hi @ neeraj87 ,

Ich hoffe, diese Beispiele helfen Ihnen: https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/transactional-templates.md

Bitte lassen Sie mich wissen, wenn Sie auf Probleme mit diesen stoßen. Vielen Dank!

Hi @ neeraj87 ,

Ihre JSON-Struktur ist einfach nicht wahr.

Die Substitution muss innerhalb des Personalisierungsarrays erfolgen. Auf diese Weise können Sie für jede Person unterschiedliche Substitutionen definieren.

Auch der Name (Schlüssel) eines Substitutionsarrays muss Substitutionen sein, und die Werte einer Substitution müssen eine Zeichenfolge sein. Kein Array.

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

@thinkingserious danke für den Link zur Dokumentation, es hat funktioniert. Ich bemerkte auch, dass mir der Plural "s" in Substitutionen fehlte.

@alperenozlu danke für die Antwort,

@thinkingserious eine

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)
    });

Dies ist der Fehler, den ich bekomme

400
{Fehler: [{Nachricht: 'Bad Request', Feld: null, Hilfe: null}]}
{server: 'nginx',
Datum: 'Do, 01. Dezember 2016 07:08:51 GMT',
'Inhaltstyp': 'application / json',
'Inhaltslänge': '63',
Verbindung: 'Keep-Alive'}

Hi @ neeraj87 ,

Bitte überprüfen Sie den Typ Ihrer Variablen, deren Typ ein String sein muss. Bitte ändern Sie auch den Schlüssel der Substitution in Substitutionen .

@alperenozlu Sie haben Recht, eine der Substitutionen war eine ganze Zahl. konvertierte es in Zeichenfolge und es funktioniert.

Danke für die Hilfe.

Hallo Leute!
Wie kann ich eine Ersetzung durch ein Array von Werten anstelle einer Zeichenfolge durchführen?

@Deniscapp Sie können die Array-Elemente lesen und zu einer Zeichenfolge verketten.

@ neeraj87 das habe ich gemacht! Aber ich habe mich nur gefragt, ob sie diese Funktion irgendwie hinzugefügt haben.
Danke für die Antwort! :) :)

@ Deniscapp oops, wusste das nicht. Ich denke es war in der älteren Version. Vielleicht kann jemand "Beamter" von SendGrid darauf antworten.

@Deniscapp , @ neeraj87

Aus den API-Dokumenten:

Eine Sammlung von Schlüssel / Wert-Paaren nach dem Muster "substitution_tag": "zu ersetzender Wert". Es wird angenommen, dass alle Zeichenfolgen sind. Diese Ersetzungen gelten zusätzlich zum Betreff und den Antwortparametern für den Text- und HTML-Inhalt des E-Mail-Textes.

Es könnte nützlich sein, wenn die Bibliothek Arrays zulässt und wir sie dann verketten, um hinter den Kulissen eine Zeichenfolge zu bilden.

Danke @vaskort!

Ich habe den Link in meinem ursprünglichen Kommentar aktualisiert.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

prasoonjalan picture prasoonjalan  ·  3Kommentare

thidasapankaja picture thidasapankaja  ·  4Kommentare

polkhovsky picture polkhovsky  ·  3Kommentare

Loriot-n picture Loriot-n  ·  4Kommentare

metalshan picture metalshan  ·  3Kommentare