Sendgrid-nodejs: Betreff wird nicht festgelegt, wenn dynamische Vorlagen verwendet werden

Erstellt am 7. Nov. 2018  ·  29Kommentare  ·  Quelle: sendgrid/sendgrid-nodejs

Ich habe versucht, einen Betreff für meine E-Mail mit dynamischen Vorlagen hinzuzufügen, aber es funktioniert nicht. Ist das schon ein bekannter Fehler? Können Sie Problemumgehungen für dieses Problem vorschlagen?

Vorlagencode:

<html>
<head>
  <title></title>
</head>
<body>
  <p> Hello <span>{{test_name}}!</span></p>
</body>
</html>

Mail-Funktion senden:

const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(settings.sendgrid.api_key);
sgMail.setSubstitutionWrappers('{{', '}}');

const msg = {
    to: '[email protected]',
    from: settings.sendgrid.from,
    subject: 'Test Subject',
    templateId: settings.sendgrid.template_id,
    dynamic_template_data: {
    test_name: 'Testing Name'
    },
};

sgMail.send(msg);
question

Hilfreichster Kommentar

Hallo @jlouie ,

Sieht Ihr Themenbereich in der Benutzeroberfläche ungefähr so ​​aus?

screen shot 2019-01-24 at 1 30 06 pm

Mit besten Empfehlungen,

Elmer

Alle 29 Kommentare

Gleich wie # 834

@ 10kc-zack sehe ich. Es ist dann ein bekanntes Problem.

Welche Problemumgehung haben Sie übrigens getan, um das Problem zu beheben?

@ nyel-dev Das Festlegen des Betreffs der Vorlage auf der SendGrid-Website funktioniert. Das Problem ist, dass Sie mit der SendGrid-API anscheinend keine Vorlage bereitstellen können, wenn Sie eine dynamische Vorlage auslösen.

Hallo @ nyel-dev,

Ich glaube an die Transaktionsvorlage, bei der Sie den Betreff auf {{Betreff}} setzen würden, und dann setzen Sie in Ihrem Code data.subject auf "[TEST] My Email Subject" .

Funktioniert das für dich?

Mit besten Empfehlungen,

Elmer

Hallo @thinkingserious , in der Hoffnung, dass Sie zusätzliche Einblicke haben.

Ich wechsle von einer Legacy-Vorlage zur Transaktionsvorlage und habe jetzt das gleiche Problem (sendgrid-nodejs v6.3.1, Knoten: v8.11.4), auch nachdem das Betrefffeld der Transaktionsvorlage durch {{subject}} . Ich habe die Substitutions-Wrapper nicht explizit über setSubstitutionWrappers() und bin gerade auf den Standard-Lenkersatz zurückgegriffen (obwohl ich versucht habe, diese auch beim Testen festzulegen).

Ich habe bestätigt, dass ich eine subject -Eigenschaft (keine Anführungszeichen oder Sonderzeichen) als msg.subject in meinem ersten Testfall, msg.dynamic_template_data.subject in meinem zweiten Testfall und mit beiden übergeben habe Bei meinem dritten Testfall und den resultierenden E-Mails wird der Betreff immer noch nicht wie erwartet ersetzt. Der Betreff der E-Mail zeigt "(kein Betreff)".

Wenn Sie die Vorlage selbst auf der sendgrid-Site im Vorschaumodus testen und die Testdaten festlegen, wird der Text jedoch wie erwartet ersetzt.

Jede Hilfe wäre dankbar. Vielen Dank!

* BEARBEITEN *
Ich sollte auch erwähnen, dass Ersetzungen im Nachrichtentext wie erwartet ersetzt werden, nur nicht in der Betreffzeile.

Hallo @jlouie ,

Hier ist ein vollständiges Beispiel . Ich hoffe das hilft!

Mit besten Empfehlungen,

Elmer

@thinkingserious der Betreff nicht in E-Mail gleich mit Beispiel

to: "[email protected]",
  from: "[email protected]",
  subject: "Hello world",
  text: "Hello plain world!",
  html: "<p>Hello HTML world!</p>",
  templateId: "d-xxxx",
  dynamic_template_data: {
    subject: "Testing Templates & Stuff",
    name: 'Some "Testing" One',
    city: "<b>Denver<b>"
  }

image

Hallo @jlouie ,

Hier ist ein vollständiges Beispiel . Ich hoffe das hilft!

Mit besten Empfehlungen,

Elmer

@thinkingserious : Leider nicht. Ich habe immer noch eine fehlende Betreffzeile in der gesendeten / empfangenen E-Mail, genau wie bei @nicholasess.

Hallo @jlouie ,

Sieht Ihr Themenbereich in der Benutzeroberfläche ungefähr so ​​aus?

screen shot 2019-01-24 at 1 30 06 pm

Mit besten Empfehlungen,

Elmer

Übrigens konnte ich dieses Problem mithilfe des Betreffs auf der Sendgrid-Vorlagenoberfläche lösen. Danke @thinkingserious

Ich schlage vor, dass sich die Einstellungen im Menü wie Code, Testdaten ändern.
image

Der Ort, an dem sich die Einstellungen befinden, ist ausgeblendet: /

Danke für das Feedback @nicholasess! Ich werde es an das Designteam weitergeben.

Ich hatte das gleiche Problem und musste mich auf diese Problemumgehung verlassen, aber es hätte nicht funktioniert, ohne die Probleme zu sichten.

Dies ist sehr intuitiv, da das Dokument angibt, dass Sie den Betreff im API-Aufruf festgelegt haben (und ausführlich beschreibt, wie Sie ihn global für die Nachricht festlegen und in Personalisierungen überschreiben können, was bei dieser Problemumgehung offensichtlich verloren geht).

Wir verlieren auch die Funktion "Standard-Betreff auf der Administrationsseite festgelegt, die im API-Aufruf überschrieben werden kann ". Nein, bei der Problemumgehung müssen wir immer einen Betreff für die betroffenen Vorlagen angeben.

(Es sei denn, es gibt eine Möglichkeit, die Standardeinstellung für die {{}} Interpolation festzulegen. Ich werde das Dokument darauf überprüfen. Bisher habe ich festgestellt, dass es sich um eine Interpolationsmethode mit Bindestrichen handelt, mit der ich überhaupt nicht vertraut bin.)

@thinkingserious

Warum ist dieses Problem geschlossen? Es ist nicht behoben.

Ich weiß, es sieht vielleicht komisch aus, aber die Leute stellen sicher, dass Sie keine Fenster oder Registerkarten mit demselben Bildschirm geöffnet haben. Sendgrid ui verfügt über eine automatische Speicherung, mit der alle zuvor gespeicherten Daten neu geschrieben werden können.

Verwendung in Fächern {{Betreff}}

und senden Sie als Variable wie andere Variablen,

so funktioniert es.

Ich war so lange mit diesem Thema beschäftigt, weil ich den Dokumenten folgte und dachte, ich hätte etwas falsch gemacht. Da ich von älteren Vorlagen migriere, dachte ich, dass die API gleich bleiben würde, und ich war überrascht, dass sie plötzlich nicht mehr wie erwartet funktioniert.

Gibt es Pläne, die Dokumentation auf v3/mail/send zu aktualisieren, um diese Änderung richtig widerzuspiegeln?

Der einzige Weg, wie ich dieses Problem lösen konnte, war mit _triple-stash_:

{{{ subject }}}

Laut diesem Artikel https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/transactional-templates.md

Kann bestätigen, dass im Betrefffeld dreifache statt doppelte geschweifte Klammern verwendet werden

Immer wenn ich die dreifachen Locken oder einen anderen Code in der Betreffzeile speichere, wird der Code nach einigen Minuten automatisch auf den Standardwert <% subject%> zurückgesetzt.

Hat jemand das gleiche Problem?

Hat jemand das gleiche Problem?

Ich habe so etwas gesehen, als ich zwei Fenster geöffnet hatte. SendGrid speichert automatisch. Wenn Sie also zwei Fenster geöffnet haben, heben sich diese gegenseitig auf.

So hat es bei mir funktioniert:

Verwendung im Betrefffeld in der SendGrid-Benutzeroberfläche: {{{subject}}}

Senden Sie "subject": "test" in message.dynamic_template_data

Vorschlag : Ihr solltet wirklich an euren Dokumenten arbeiten. Ich meine wirklich, sie sind so verstreut und Kleinigkeiten sind veraltet.

Dreifache Klammern funktionieren immer noch. Ich überprüfe nur, ob dies noch die offizielle Lösung ist.

Vielen Dank!

image

@tcukanoot Ja.

Bitte öffnen Sie die Ausgabe erneut! Die Dokumente sind immer noch nicht korrekt und schlagen vor, subject auf der obersten Ebene der Anfrage festzulegen. Es muss jedoch in dynamic_template_data und der Betreff in der Vorlage muss als {{subject}} oder ein anderer dynamischer Schlüssel festgelegt sein. Dies ist ab 2018 geöffnet und seitdem wurden keine Änderungen an der Dokumentation vorgenommen!

Ich erhalte einen 400-Anforderungsfehler vom Server, wenn ich versuche, Substitutionen oder dynamic_template_data zu verwenden

Bitte korrigieren Sie Ihre Dokumente. dynamic_template_date sollte basierend auf https://github.com/sendgrid/sendgrid-python/blob/main/use_cases/kitchen_sink.md und der v3-Dokumentation nicht gültig sein
Dennoch berichten die Leute, dass es für sie funktioniert

Was ist los? 🤔

So hat es bei mir funktioniert:

Verwendung im Betrefffeld in der SendGrid-Benutzeroberfläche: {{{subject}}}

Senden Sie "subject": "test" in message.dynamic_template_data

Vorschlag : Ihr solltet wirklich an euren Dokumenten arbeiten. Ich meine wirklich, sie sind so verstreut und Kleinigkeiten sind veraltet.

Wie es in PHP geht. Bitte teilen Sie den Code!

Sind die Dokumente derzeit nur falsch, wenn sie vorschlagen, dass der Betreff dann als Parameter der obersten Ebene gesendet wird?

So hat es bei mir funktioniert:

Verwendung im Betrefffeld in der SendGrid-Benutzeroberfläche: {{{subject}}}

Senden Sie "subject": "test" in message.dynamic_template_data

Vorschlag : Ihr solltet wirklich an euren Dokumenten arbeiten. Ich meine wirklich, sie sind so verstreut und Kleinigkeiten sind veraltet.

Das hat bei mir funktioniert! Ihr Dokument sollte ungefähr so ​​aussehen:

const msg = {
    to: toEmail,
    from: "email",
    templateId: "tempateId",
    dynamic_template_data: {
      subject: "subjectHere",
    },
  };

sendGridEmail
    .send(msg)
    .then(() => console.log("email sent"))
    .catch((error) => console.error(error.toString()))
War diese Seite hilfreich?
1 / 5 - 1 Bewertungen