Sendgrid-nodejs: Le sujet ne change pas dans le modèle mail.send ()

Créé le 1 août 2018  ·  26Commentaires  ·  Source: sendgrid/sendgrid-nodejs

Résumé de la question

l'objet ne change pas dans l'e-mail

Étapes à suivre pour reproduire

appeler sgMail.send (voir ci-dessous)

const seeBellow = {
  "from": "[email protected]",
  "templateId": "d-1da76d64a1bd4c8b87c035ccaa3f6cfb",
  "dynamicTemplateData": {
    "username": "[email protected]",
    "giftcardAmount": "$45",
    "validUntil": "Aug 2019",
    "receiptNumber": 111299,
    "ewayTransactionId": "00003100003509951fac7d25e8dd96e0"
  },
  "personalizations": [
    {
      "to": "[email protected]",
      "subject": "Somebody has sent you a Gift Card"
    }
  ],
  "isMultiple": false,
  "substitutionWrappers": [
    "{{",
    "}}"
  ]
}

qui aboutit au post suivant

{
  "method": "POST",
  "url": "/v3/mail/send",
  "body": {
    "from": {
      "email": "[email protected]"
    },
    "personalizations": [
      {
        "to": [
          {
            "email": "[email protected]"
          }
        ],
        "subject": "Somebody has sent you a Gift Card",
        "dynamic_template_data": {
          "username": "[email protected]",
          "giftcardAmount": "$45",
          "validUntil": "Aug 2019",
          "receiptNumber": 111299,
          "ewayTransactionId": "00003100003509951fac7d25e8dd96e0"
        }
      }
    ],
    "template_id": "d-1da76d64a1bd4c8b87c035ccaa3f6cfb"
  }
}

J'ai également essayé d'envoyer 2 e-mails via un éventail de messages au lieu d'utiliser des personnalisations, mais cela ne fonctionne pas non plus.

Enfin, j'ai également essayé de placer le sujet à côté du champ from, cela n'a toujours pas fonctionné

Détails techniques:

  • Version sendgrid dans lockfile:
    "@sendgrid/mail": {
      "version": "6.3.1",
      "resolved": "https://registry.npmjs.org/@sendgrid/mail/-/mail-6.3.1.tgz",
      "integrity": "sha512-5zIeAV9iU+0hQkrOQ/D4RB2MfpK+lNbOortIfQdCh95aMDF/TRc9WB8FGNhmQrx9YMuJTms5eiBklF0Fi/dbVg==",
      "requires": {
        "@sendgrid/client": "6.3.0",
        "@sendgrid/helpers": "6.3.0"
      }
    },
  • Version Node.js: 8.11.1
unknown or a hacktoberfest help wanted bug

Commentaire le plus utile

Cela devrait être comme:
"dynamic_template_data": {
"sujet": "votre sujet",
},

allez sur https://sendgrid.com/dynamic_templates
et ajoutez {{{subject}}} dans PARAMÈTRES DU MODÈLE.

Cela fonctionne pour moi: +1:

Tous les 26 commentaires

La solution de contournement que j'utilise est d'ajouter un sujet dans l'interface Web de SendGrid comme {{subject}}, puis de passer une variable de sujet à dynamic_template_data . Il semble que les variables de modèle fonctionnent dans les sujets, de sorte que vous pouvez essentiellement passer le sujet entier de cette manière par programme.

Bonjour @falconmick ,

@ la solution de contournement enquêtons sur la cause racine.

@ wbw20 ,

Merci de votre aide! J'ai modifié votre image car elle n'ajoute rien à la solution. Je ne sais pas quelle était votre intention.

Meilleures salutations,

Elmer

FWIW, je vois un comportement similaire avec la librairie Ruby.

La définition de l'objet sur l'objet de courrier électronique ne permet pas de remplacer tout élément défini sur le modèle sur les outils Web. Il faut en faire un guidon et ajouter à chaque personnalisation.

Je rencontre moi aussi ce problème. J'ai du mal à déterminer exactement pourquoi cela échoue.

La solution de contournement semble viable, mais est regrettable car elle va à l'encontre de la configuration que nous avons pour tous les autres e-mails SendGrid.

Cela devrait être comme:
"dynamic_template_data": {
"sujet": "votre sujet",
},

allez sur https://sendgrid.com/dynamic_templates
et ajoutez {{{subject}}} dans PARAMÈTRES DU MODÈLE.

Cela fonctionne pour moi: +1:

La solution de @atarabbi devrait être ce dont vous avez besoin. Veuillez continuer à commenter ce fil si vous rencontrez toujours des problèmes. Merci!

La solution de @atarabbi devrait être ce dont vous avez besoin. Veuillez continuer à commenter ce fil si vous rencontrez toujours des problèmes. Merci!

Mais cela ne laisse-t-il toujours pas les choses ne pas fonctionner selon la façon dont l'API de la bibliothèque est documentée pour que nous puissions l'utiliser? Définir le sujet comme les choses le permettent semblerait encore cassé non?

Oui, la méthode suggérée par la documentation pour changer de sujet ne semble pas fonctionner. Je ne sais pas si ce n'est qu'un problème pour dynamic_template_data, mais je le rencontre également.

J'essaierai d'utiliser un modèle dynamique pour la ligne d'objet, mais la documentation est étonnamment incohérente

D'après ce que je vois dans la documentation ici , il est documenté pour mettre à jour le sujet du modèle avec la variable guidon (accordé, cela pourrait être une explication plus complète). @baugarten Juste pour être sûr, dites-vous que cela ne fonctionne pas pour vous? Pouvez-vous indiquer où nous vous orientons dans la mauvaise direction?

Je vois que nous ne documentons pas dynamic_template_data dans le package client .

De plus, utilisez-vous la dernière version de la bibliothèque v6.3.1?

Je veux vraiment résoudre ce problème et je m'excuse pour la confusion!

FWIW Je vois également ce problème dans la bibliothèque Golang , je ne peux pas remplacer le sujet du modèle de l'appel API. Si je ne trouve pas de solution de contournement appropriée, je ferai également un problème.

Ugh, la documentation dit spécifiquement que le sujet de base sera écrasé par un sujet de personnalisation, ce qui n'est pas du tout la même chose que de pouvoir modeler le sujet.

EDIT: Surtout quand vos propres bibliothèques ne fonctionnent pas. Ils ajoutent un sujet dans une personnalisation, où il ne peut pas être utilisé comme modèle. Si vous pensez qu'il s'agit du comportement documenté, les bibliothèques doivent l'ajouter au sous-objet dynamic_template_data.

Également rencontré cela, le sujet ne semble pas être écrasé, mais le contournement est utilisable.

Laisser le sujet dans "dynamic_template_data" et y faire référence dans le modèle avec {{{subject}}} semble effectivement fonctionner. J'ai également remarqué que custom_args n'existe plus. Il est fusionné avec les substitutions dans 'dynamic_template_data'. Malheureusement, les documents ne le disent pas. Si vous voulez passer un paramètre de langue par exemple, faites-le également dans votre 'dynamic_template_data'.

Le champ "dynamic_template_data" fonctionne mais semble non documenté: https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/index.html

C'est toujours un problème. Pourquoi cela a-t-il été fermé?

La solution de contournement ne fonctionne pas de manière fiable. Si j'envoie ~ 30 e-mails en boucle en utilisant le même sujet exact, j'en reçois certains avec le sujet que j'ai envoyé et d'autres avec (sans sujet).

Existe-t-il actuellement un moyen d'envoyer de manière fiable un sujet personnalisé via l'API?

@ deepai-org Il est préférable d'utiliser les derniers documents ici: https://sendgrid.com/docs/API_Reference/api_v3.html

@vladkosarev Êtes-vous en train de dire que vous utilisez le même modèle dynamique avec un sujet modelé avec des guidons (voir https://github.com/sendgrid/sendgrid-nodejs/issues/713#issuecomment-443206995) et que votre charge utile de requête contient le bon données de modèle dynamique pour le sujet et il n'utilise pas le sujet de manière fiable? Si tel est le cas, il est préférable de contacter le support, car ce n'est pas quelque chose qui peut / doit être traité par une bibliothèque côté client.

@ childish-sambino Après un certain temps, le sujet était en fait correct dans tous les e-mails. Il semble qu'il y ait quelque chose d'async pendant un certain temps et que certains e-mails recevront un ancien modèle d'e-mail et un nouveau.

Cette https://sendgrid.com/docs/API_Reference/api_v3.html documentation correcte? Je suis sûr que l'envoi du sujet tel que décrit dans ce document ne fonctionne pas. Jusqu'à présent, la solution de contournement décrite dans ce ticket était la seule façon de fonctionner.

@vladkosarev Ce sont les bons documents. Si vous utilisez des modèles dynamiques, l'objet doit être modélisé et transmis en tant que données de modèle dynamique afin de pouvoir le modifier par e-mail, comme indiqué dans ce problème. Si vous n'utilisez pas de modèles, le sujet fourni dans la charge utile d'envoi de courrier sera utilisé.

Pour savoir pourquoi une synchronisation était nécessaire pour que le sujet soit correct pour tous les e-mails, il est préférable de contacter le support.

@ childish-sambino Pouvez-vous s'il vous plaît m'indiquer où dans la documentation il explique comment utiliser le sujet dans un modèle dynamique? Je ne trouve toujours cela nulle part dans ce nouveau lien. Merci!

si je me souviens correctement de @vladkosarev , vous souhaitez définir la valeur du guidon dans le modèle lui-même pour le sujet - cela se fait à l'aide de l'interface graphique du modèle. Ensuite, référencez simplement cette valeur dans votre code.

image

@aroach merci mais je suis intéressé à voir ça dans la doc, pas dans un commentaire sur github. Au fait, {{}} ne fonctionnait pas pour moi lorsque j'ai essayé, seuls les triples crochets {{{}}} fonctionnaient (cela pouvait être le même problème d'async qu'avant).

@vladkosarev Il semble être mentionné ici: https://sendgrid.com/docs/ui/sending-email/how-to-send-an-email-with-dynamic-transactional-templates/

Ce modèle de guidon peut être utilisé dans les lignes de texte, html et objet de votre modèle.

@aroach merci. J'ai juste fait plus de tests et le sujet prend un certain temps pour réellement `` s'appliquer '' à un modèle, il semble donc que cela ne fonctionne pas si vous testez (modifier le modèle / envoyer). Si vous attendez 10 minutes, il est effectivement appliqué et fonctionne comme prévu. Je pourrais contacter SG pour documenter que les mises à jour des modèles ne sont pas en temps réel (du moins pour le sujet) et que vous devez attendre un peu pour faire un test. Merci.

@Whatthefoxsays devrait être en mesure de chasser cela et / ou d'apporter les modifications appropriées. 👋

@aroach une chose que je devrais probablement mentionner est que nous avons deux adresses IP pour envoyer des e-mails. Je ne connais pas le fonctionnement interne de SG mais cela pourrait être la raison pour laquelle il y a un problème (prend du temps à se propager au deuxième nœud?).

Cette page vous a été utile?
0 / 5 - 0 notes