Sendgrid-nodejs: Le sujet n'est pas défini si vous utilisez des modèles dynamiques

Créé le 7 nov. 2018  ·  29Commentaires  ·  Source: sendgrid/sendgrid-nodejs

J'essayais d'ajouter un sujet à mon e-mail avec des modèles dynamiques mais cela ne fonctionne pas. Est-ce déjà un bug connu? Pouvez-vous suggérer des solutions de contournement pour ce problème?

code de modèle:

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

envoyer la fonction de courrier:

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

Commentaire le plus utile

Bonjour @jlouie ,

Votre domaine ressemble-t-il à ceci dans l'interface utilisateur?

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

Meilleures salutations,

Elmer

Tous les 29 commentaires

Identique au # 834

@ 10kc-zack je vois. C'est alors un problème connu.

Au fait, quelle solution de contournement avez-vous faite pour résoudre ce problème?

@ nyel-dev La définition du sujet du modèle sur le site Web SendGrid fonctionne. Le problème est qu'il semble que l'API de SendGrid ne vous permet pas de fournir un modèle lorsque vous déclenchez un modèle dynamique.

Bonjour @ nyel-dev,

Je crois que dans le modèle transactionnel, vous définiriez le sujet comme {{subject}}, puis dans votre code, vous définissez data.subject comme étant "[TEST] My Email Subject" .

Est-ce que ça marche pour toi?

Meilleures salutations,

Elmer

Bonjour @thinkingserious , en espérant que vous ayez des informations supplémentaires.

Je suis en train de passer d'un modèle hérité au modèle transactionnel et je rencontre maintenant le même problème (sendgrid-nodejs v6.3.1, Node: v8.11.4) même après avoir remplacé le champ d'objet du modèle transactionnel par {{subject}} . Je n'ai pas explicitement défini les wrappers de substitution via setSubstitutionWrappers() et je viens de revenir sur le jeu de guidons par défaut (bien que j'aie essayé de les définir également lors des tests).

J'ai confirmé que je transmettais une propriété subject (sans guillemets ni caractères spéciaux) comme msg.subject dans mon premier cas de test, msg.dynamic_template_data.subject dans mon deuxième cas de test et avec les deux défini pour mon troisième cas de test et les e-mails résultants reçus n'ont toujours pas le sujet remplacé comme je m'y attendais. L'objet de l'e-mail indique "(sans objet)".

Le test du modèle lui-même sur le site sendgrid en mode Aperçu et la définition des données de test remplace le texte comme prévu.

Toute aide serait appréciée. Merci!

* ÉDITER *
Je dois également mentionner que les substitutions dans le corps du message sont remplacées comme prévu, mais pas dans la ligne d'objet.

Bonjour @jlouie ,

Voici un exemple complet . J'espère que cela aide!

Meilleures salutations,

Elmer

@thinkingserious le sujet ne s'affiche pas dans l'e-mail même avec l'exemple

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

Bonjour @jlouie ,

Voici un exemple complet . J'espère que cela aide!

Meilleures salutations,

Elmer

@thinkingserious : Malheureusement, ce n'est pas le cas. Je rencontre toujours une ligne d'objet manquante dans l'e-mail envoyé / reçu, tout comme @nicholasess.

Bonjour @jlouie ,

Votre domaine ressemble-t-il à ceci dans l'interface utilisateur?

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

Meilleures salutations,

Elmer

D'ailleurs, j'ai pu résoudre ce problème en utilisant le Set Subject sur l'interface du modèle Sendgrid. Merci @thinkingserious

Je suggère que les paramètres changent dans le menu comme le code, les données de test.
image

L'endroit où se trouvent les paramètres, est caché: /

Merci pour les commentaires @nicholasess! Je vais le transmettre à l'équipe de conception.

J'ai rencontré le même problème et j'ai dû me fier à cette solution de contournement, mais cela n'aurait pas fonctionné sans passer au crible les problèmes.

C'est super contre-intuitif, car le document dit que vous définissez le sujet dans l'appel d'API (et détaille comment vous pouvez le définir globalement pour le message et le remplacer dans les personnalisations, ce qui est évidemment perdu avec cette solution de contournement).

Nous perdons également la fonctionnalité "Objet par défaut défini sur la page d'administration, qui peut être remplacée dans l'appel d'API". Non, avec la solution de contournement, nous devons toujours spécifier un sujet pour les modèles concernés.

(Sauf s'il existe un moyen de définir la valeur par défaut dans l'interpolation {{}}. Je vais vérifier la documentation pour cela, ce que j'ai trouvé jusqu'à présent concerne une méthode d'interpolation utilisant des tirets, que je ne connais pas du tout.)

@thinkingserious

Pourquoi ce problème est-il clos? Ce n'est pas fixe.

Je sais que cela peut paraître bizarre, mais les gars s'assurent que vous n'avez pas ouvert de fenêtres ou d'onglets avec le même écran. Sendgrid ui a une sauvegarde automatique qui peut réécrire toutes les données que vous avez enregistrées auparavant.

utilisation dans les sujets {{subject}}

et envoyer comme variable comme les autres variables,

de cette façon, cela fonctionne.

J'ai été coincé sur ce problème pendant si longtemps parce que je suivais la documentation et pensais avoir fait quelque chose de mal. Depuis que je migre à partir de modèles hérités, j'ai pensé que l'API resterait la même et j'ai été surpris de voir qu'elle ne fonctionnait soudainement pas comme prévu.

Est-il prévu de mettre à jour la documentation en v3/mail/send pour refléter correctement ce changement?

La seule façon dont j'ai pu résoudre ce problème était avec _triple-stash_:

{{{ subject }}}

Selon cet article https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/transactional-templates.md

Peut confirmer l'utilisation d'accolades triples au lieu de doubles dans le domaine des travaux

Chaque fois que j'enregistre le triple curlys ou tout autre code dans la ligne d'objet, le code revient automatiquement après quelques minutes à la norme <% subject%>.

Est-ce que quelqu'un d'autre a le même problème?

Est-ce que quelqu'un d'autre a le même problème?

J'ai vu quelque chose comme ça quand j'avais deux fenêtres ouvertes. SendGrid enregistre automatiquement, donc si vous avez deux fenêtres ouvertes, elles s'annuleront mutuellement.

La façon dont cela a fonctionné pour moi:

utiliser dans le champ d'objet de l'interface utilisateur SendGrid: {{{subject}}}

envoyer "subject": "test" en message.dynamic_template_data

Suggestion : vous devriez vraiment travailler sur vos documents. Je veux dire en fait, ils sont tellement dispersés et les morceaux sont dépassés.

Les triples crochets fonctionnent toujours, je vérifie simplement si c'est toujours la solution officielle.

Merci!

image

@tcukanoot Oui.

Veuillez rouvrir le problème! Les documents ne sont toujours pas corrects suggérant subject définir dynamic_template_data et le sujet du modèle doit être défini sur {{subject}} ou toute autre clé dynamique. Ceci est ouvert à partir de 2018 et aucun changement dans la documentation n'a été introduit depuis!

J'obtiens une erreur de demande 400 du serveur lorsque j'essaie d'utiliser des substitutions ou dynamic_template_data

Veuillez corriger vos documents. dynamic_template_date ne doit pas être valide sur la base de https://github.com/sendgrid/sendgrid-python/blob/main/use_cases/kitchen_sink.md et de la documentation v3
Pourtant, les gens disent que cela fonctionne pour eux

ce qui se passe? 🤔

La façon dont cela a fonctionné pour moi:

utiliser dans le champ d'objet de l'interface utilisateur SendGrid: {{{subject}}}

envoyer "subject": "test" en message.dynamic_template_data

Suggestion : vous devriez vraiment travailler sur vos documents. Je veux dire en fait, ils sont tellement dispersés et les morceaux sont dépassés.

Comment le faire en PHP. Veuillez partager le code!

Les documents sont-ils actuellement simplement inexacts en suggérant que le sujet soit alors envoyé en tant que paramètre de premier niveau?

La façon dont cela a fonctionné pour moi:

utiliser dans le champ d'objet de l'interface utilisateur SendGrid: {{{subject}}}

envoyer "subject": "test" en message.dynamic_template_data

Suggestion : vous devriez vraiment travailler sur vos documents. Je veux dire en fait, ils sont tellement dispersés et les morceaux sont dépassés.

Cela a fonctionné pour moi! Votre doc devrait ressembler à quelque chose comme:

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()))
Cette page vous a été utile?
1 / 5 - 1 notes