Ersetzungen funktionieren bei Verwendung dieser Bibliothek nicht. Es funktioniert bei Verwendung von Curl.
`'use strict';
var config = {
apiKey: '',
from: '',
to: '',
templateId: ''
}
const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(config.apiKey);
async function sendTest() {
var newMsg = {
"from": {
"name": "Test Script",
"email": config.from
},
"personalizations": [{
"to": config.to,
"substitutions": {
"-firstName-": "Maciejs",
"%firstName%": "Maciej",
"-first_name": "Maciej",
"%first_name%": "Maciej"
}
}],
"subject": "test subject",
"content": [{
"type": "text/plain",
"value": "Hello, %firstName%!"
},
{
"type": "text/html",
"value": "<html><p>Hello, %firstName%!</html> "
}],
"template_id": config.templateId
}
await sgMail.send(newMsg);
}
sendTest();`
Ich füge auch einen Screenshot der Vorlage im SendGrid-Editor und die E-Mail hinzu, die ich erhalte
@MaciejKrawczyk Haben Sie versucht, setSubstitutionWrapper
und die Wrapper aus substitutions
wegzulassen?
Ex:
sgMail.setSubstitutionWrappers('-', '-');
"substitutions": {
"firstName": "Maciejs"
}
Ich bin mir nicht sicher, wie Sie auf diese Weise mehrere Wrapper gleichzeitig ausführen würden, aber ich konnte Subs dazu bringen, mit dieser Version zu arbeiten, indem ich die Wrapper nicht im Substitutionsattribut angegeben habe. Meine Subs sehen aus wie
emailOptions.substitutions = {}
emailOptions.substitutions.CLIENT_NAME = myClientName
Es klappt. Dankeschön!
Vielen Dank für Ihren Besuch bei @kmcurry!
Ich bin froh, dass Sie @MaciejKrawczyk betreiben!
Dies sollte unbedingt in die README-Datei aufgenommen werden! Kostete mich 2 Stunden, um das herauszufinden!
@ Laskuma ,
Das ist nicht gut :(
Hilft diese Dokumentation ? Wenn ja, können Sie mir zeigen, wo Sie zuerst nach Hilfe gesucht haben, damit ich sicherstellen kann, dass wir dort einen klaren Link haben?
Vielen Dank!
Mit besten Empfehlungen,
Elmer
@thinkingserious Ja. Dieses Dokument hat sehr geholfen. Da ich jedoch von der offiziellen Website kam, auf der die Ersetzungsschlüssel den Wrapper enthalten sollten, habe ich den Anwendungsfällen nicht allzu viel Aufmerksamkeit geschenkt.
Hallo @LASkuma ,
Wenn Sie sagen, dass Sie von der offiziellen Website gekommen sind, können Sie mir bitte mitteilen, auf welche URL Sie sich beziehen? Vielen Dank!
Hallo @thinkingserious ,
Ich habe mich auf diese Seite bezogen . Sogar der Abschnitt zum Ausprobieren enthält Substitutionsschlüssel mit den enthaltenen Wrappern. Nachdem ich die Dokumentation gelesen hatte, dachte ich, dass die Knotenbibliothek natürlich mit der Dokumentation übereinstimmt.
Danke @LASkuma!
Das ist wirklich hilfreiches Feedback.
Bei der Lösung bin ich mir allerdings nicht ganz sicher. Diese Dokumente sind für diejenigen gedacht, die direkt mit unserer API interagieren möchten oder eine unserer Hilfsbibliotheken verwenden möchten.
Sie haben bereits erwähnt, dass wir diese Dokumentation in die README-Datei aufnehmen sollten. Meinst du hier Sollten wir dort speziell den Substitutions-Anwendungsfall nennen?
Danke nochmal für deine Hilfe!
Mit besten Empfehlungen,
Elmer
Dies sollte auf jeden Fall in der Readme sein. Ich habe alles versucht, ich habe alle Dokumente in der SendGrid-API-Referenz gelesen, alles, was auf GitHub ist (dachte ich), habe den Support kontaktiert und ich würde meinen eigenen API-Wrapper erstellen, wenn @kmcurry nicht
Danke @MaciejKrawczyk ,
Dies ist ein sehr gutes Feedback und ich habe es dem Rückstand unseres Teams für einen tieferen Tauchgang hinzugefügt. Wir werden Updates zu diesem Thread bereitstellen.
Vielen Dank!
Mit besten Empfehlungen,
Elmer
Ist das erledigt? Ich habe das gleiche Problem.
Hallo @sriharrsha ,
Haben Sie den Vorschlag von @kmcurry ausprobiert?
Noch nicht. Ich werde aktualisieren, ob es funktioniert oder nicht bald.
Entschuldigung für die späte Antwort.
Für alle so verzweifelt wie ich gestern: In der v3-API müssen Sie dynamic_template_data
anstelle von substitutions
, dies ist noch nirgendwo dokumentiert!
Verwenden Sie dann {{var_name}}
in der E-Mail-Vorlage und dynamic_template_data: { var_name: "var_value" }
im API-Aufruf.
@tkafka oh mein Gott! Vielen Dank für diesen Mann, der mir in den letzten 2 Tagen die Haare ausgezogen hat.
@tkafka Vielen Dank! Das ist so frustrierend! Ich habe 3 Stunden meines Tages gebraucht ...
Hier ist der gesamte Code für den Fall, dass jemand dasselbe sucht:
var sendgrid = require('@sendgrid/mail');
sendgrid.setApiKey(env.sendgridApiKey);
sendgrid.setSubstitutionWrappers('{{', '}}');
var newMsg = {
"from": {
"name": "Your Company",
"email": env.businessEmail
},
"personalizations": [{
"to": order.email,
"dynamic_template_data": {"order_id": "1234", "first_name": "Max", "last_name": "Mustermann"}
}],
"subject": "test subject",
"content": [{
"type": "text/plain",
"value": "Hello, {{firstName}}!"
},
{
"type": "text/html",
"value": "<html><p>Hello, {{'firstName}}!</html> "
}],
"template_id": env.sendgridOrderConfirmationTemplateId
};
console.log("Sending confirmation email...")
return sendgrid.send(newMsg);
Die Dokumentation von sendgrid ist gelinde gesagt schrecklich.
Hallo, alle miteinander,
Weitere Informationen zum Fortschritt finden Sie in
Mit besten Empfehlungen,
Elmer
Hah, dynamic_template_data
. Ich habe dein kleines Rätsel gelöst! :Lächeln:
Für andere Typoskriptbenutzer - Datei erstellen mail.d.ts
:
import {MailData} from "@sendgrid/helpers/classes/mail";
// see https://github.com/sendgrid/sendgrid-nodejs/issues/638
declare module "@sendgrid/helpers/classes/mail" {
export interface MailData {
dynamic_template_data: {[key: string]: string};
}
}
Vielen Dank, dass Sie @xduseko !
Hilfreichster Kommentar
Für alle so verzweifelt wie ich gestern: In der v3-API müssen Sie
dynamic_template_data
anstelle vonsubstitutions
, dies ist noch nirgendwo dokumentiert!Verwenden Sie dann
{{var_name}}
in der E-Mail-Vorlage unddynamic_template_data: { var_name: "var_value" }
im API-Aufruf.