Les substitutions ne fonctionnent pas lors de l'utilisation de cette bibliothèque. Cela fonctionne lors de l'utilisation de 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();`
Je joins également une capture d'écran du modèle dans l'éditeur SendGrid et l'e-mail que je reçois
@MaciejKrawczyk Avez-vous essayé d'utiliser setSubstitutionWrapper
et d'omettre les wrappers de substitutions
?
Ex:
sgMail.setSubstitutionWrappers('-', '-');
"substitutions": {
"firstName": "Maciejs"
}
Je ne sais pas comment vous feriez plusieurs wrappers à la fois de cette façon, mais j'ai pu faire en sorte que les sous-marins travaillent avec cette version en ne spécifiant pas les wrappers dans l'attribut de substitution. Mes sous-marins ressemblent à
emailOptions.substitutions = {}
emailOptions.substitutions.CLIENT_NAME = myClientName
Ça marche. Merci!
Merci d'être intervenu pour aider @kmcurry!
Je suis content que vous soyez opérationnel @MaciejKrawczyk!
Cela devrait être définitivement mis dans le README! Cela m'a coûté 2 heures pour comprendre cela!
@LASkuma ,
Ce n'est pas bon :(
Cette documentation vous aide-t-elle? Dans l'affirmative, pouvez-vous m'indiquer où vous avez d'abord cherché de l'aide afin que je puisse m'assurer que nous avons un lien clair là-bas?
Merci!
Meilleures salutations,
Elmer
@thinkingserious Oui. Ce doc a beaucoup aidé. Cependant, comme je viens du site officiel, où les clés de substitution devraient inclure le wrapper, je n'ai pas accordé trop d'attention aux cas d'utilisation.
Salut @LASkuma ,
Lorsque vous dites que vous venez du site officiel, pourriez-vous s'il vous plaît me faire savoir à quelle URL vous faites référence? Merci!
Salut @thinkingserious ,
Je faisais référence à cette page . Même la section d'essai a des clés de substitution avec les wrappers inclus. Après avoir lu la documentation, j'ai pensé que la bibliothèque Node était naturellement cohérente avec la documentation.
Merci @LASkuma!
Ce sont des commentaires vraiment utiles.
Je ne suis pas tout à fait sûr de la solution. Ces documents sont destinés à ceux qui souhaitent interagir directement avec notre API plutôt que d'utiliser l'une de nos bibliothèques d'aide.
Vous avez mentionné précédemment que nous devrions inclure cette documentation dans le fichier README. Voulez-vous dire ici ? Devrions-nous appeler spécifiquement le cas d'utilisation de substitution ici?
Merci encore pour votre aide!
Meilleures salutations,
Elmer
Cela devrait certainement être sur le readme. J'ai tout essayé, j'ai lu tous les documents sur la référence de l'API SendGrid, tout ce qui se trouve sur GitHub (je pensais), j'ai contacté le support et je créerais mon propre wrapper d'API si ce n'était pour
Merci @MaciejKrawczyk ,
Ce sont de très bons retours et j'ai ajouté cela au backlog de notre équipe pour une plongée plus profonde. Nous fournirons des mises à jour sur ce fil.
Merci!
Meilleures salutations,
Elmer
Est-ce fait? J'ai le même problème;
Salut @sriharrsha ,
Avez-vous essayé la suggestion de @kmcurry ?
Pas encore. Je mettrai à jour si cela fonctionne ou pas bientôt.
Désolé pour la réponse tardive.
À tout le monde aussi désespéré que moi hier: dans l'API v3, vous devez utiliser dynamic_template_data
au lieu de substitutions
, ce n'est encore documenté nulle part!
Ensuite, utilisez {{var_name}}
dans le modèle d'e-mail et dynamic_template_data: { var_name: "var_value" }
dans l'appel API.
@tkafka oh mon dieu! merci pour cet homme, qui m'arrache les cheveux depuis 2 jours.
@tkafka Merci beaucoup! C'est tellement frustrant! Cela m'a pris 3 heures de ma journée ...
Voici le code complet au cas où quelqu'un chercherait le même:
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);
La documentation de sendgrid est pour le moins horrible.
Bonjour tout le monde,
Veuillez consulter ce numéro pour connaître la progression. Nous travaillons actuellement sur la mise à jour pour C #, puis Java, puis ce SDK est juste après cela. Merci pour votre patience et mes excuses pour le retard.
Meilleures salutations,
Elmer
Hah, dynamic_template_data
. J'ai résolu votre petit puzzle! :sourire:
Pour les autres utilisateurs dactylographiés - Créez le fichier 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};
}
}
Merci @xduseko !
Commentaire le plus utile
À tout le monde aussi désespéré que moi hier: dans l'API v3, vous devez utiliser
dynamic_template_data
au lieu desubstitutions
, ce n'est encore documenté nulle part!Ensuite, utilisez
{{var_name}}
dans le modèle d'e-mail etdynamic_template_data: { var_name: "var_value" }
dans l'appel API.