Sendgrid-nodejs: El asunto no cambia en la plantilla mail.send ()

Creado en 1 ago. 2018  ·  26Comentarios  ·  Fuente: sendgrid/sendgrid-nodejs

Resumen de asuntos

el asunto no cambia en el correo electrónico

Pasos para reproducir

llamar a sgMail.send (seeBellow)

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": [
    "{{",
    "}}"
  ]
}

que da como resultado la siguiente publicación

{
  "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"
  }
}

También intenté enviar 2 correos electrónicos a través de una serie de mensajes en lugar de usar personalizaciones, sin embargo, esto tampoco funciona.

Finalmente, también intenté colocar el sujeto al lado del campo de, todavía no funcionó

Detalles técnicos:

  • versión de sendgrid en 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"
      }
    },
  • Versión de Node.js: 8.11.1
unknown or a hacktoberfest help wanted bug

Comentario más útil

Debería ser como:
"dynamic_template_data": {
"asunto": "su asunto",
},

vaya a https://sendgrid.com/dynamic_templates
y agregue {{{subject}}} en CONFIGURACIÓN DE PLANTILLA.

Funciona para mí: +1:

Todos 26 comentarios

La solución alternativa que estoy usando es agregar un asunto en la interfaz web de SendGrid como {{asunto}} y luego pasar una variable de asunto a dynamic_template_data . Parece que las variables de plantilla funcionan en las asignaturas, por lo que básicamente puedes pasar toda la asignatura programáticamente de esa manera.

Hola @falconmick ,

@ wbw20 workaround funciona, inténtelo mientras investigamos la causa raíz.

@ wbw20 ,

¡Gracias por ayudar! Edité tu imagen porque no se agregó a la solución. No estoy seguro de cuál era tu intención.

Con los mejores deseos,

Elmer

FWIW, veo un comportamiento similar con Ruby lib.

Establecer el asunto en el objeto de correo electrónico no reemplaza nada definido en la plantilla en las herramientas web. Hay que convertirlo en un manillar y añadirlo a cada personalización.

Yo también me encuentro con este problema. Estoy luchando por señalar exactamente por qué está fallando.

La solución parece viable, pero es desafortunada, ya que va en contra de la configuración que tenemos para todos los demás correos electrónicos de SendGrid.

Debería ser como:
"dynamic_template_data": {
"asunto": "su asunto",
},

vaya a https://sendgrid.com/dynamic_templates
y agregue {{{subject}}} en CONFIGURACIÓN DE PLANTILLA.

Funciona para mí: +1:

La solución de @atarabbi debería ser lo que necesitas. Continúe comentando en este hilo si aún tiene problemas. ¡Gracias!

La solución de @atarabbi debería ser lo que necesitas. Continúe comentando en este hilo si aún tiene problemas. ¡Gracias!

¿Pero eso no deja que las cosas finalmente no funcionen de acuerdo con cómo la API de la biblioteca está documentada para que la consumamos? Establecer el tema como las cosas lo permiten todavía parecería roto, ¿no?

Sí, el método que sugieren los documentos para cambiar de tema no parece funcionar. No sé si esto es solo un problema para dynamic_template_data, pero yo también estoy experimentando esto.

Intentaré usar una plantilla dinámica para la línea de asunto, pero la documentación es sorprendentemente inconsistente

Por lo que veo en los documentos aquí , está documentado para actualizar el tema de la plantilla con la variable de manillar (concedido, esta podría ser una explicación más amplia). @baugarten Solo para estar seguro, ¿estás diciendo que eso no funciona para ti? ¿Puedes señalar dónde te estamos apuntando en la dirección incorrecta?

Veo que no estamos documentando dynamic_template_data en el paquete del cliente .

Además, ¿está utilizando la última versión de la biblioteca v6.3.1?

¡Definitivamente quiero arreglar esto y disculparme por la confusión!

FWIW También veo este problema en la biblioteca de Golang , no puedo anular el asunto de la plantilla de la llamada a la API. Si no puedo encontrar una solución alternativa adecuada, también crearé un problema allí.

Uf, los documentos dicen específicamente que el tema base será sobrescrito por un tema de personalización, que no es en absoluto lo mismo que poder modelar el tema.

EDITAR: Especialmente cuando sus propias bibliotecas no funcionan. Añaden un tema en una personalización, donde no se puede utilizar como plantilla. Si espera que este sea el comportamiento documentado, las bibliotecas deben agregarlo al subobjeto dynamic_template_data.

También me encontré con esto, el tema no parece estar sobrescrito, pero se puede usar la solución.

Dejar el tema en 'dynamic_template_data' y referirse a él en la plantilla con {{{subject}}} de hecho parece funcionar. También lo que noté es que custom_args ya no existe. Se fusiona junto con sustituciones en 'dynamic_template_data'. Desafortunadamente, los documentos no dicen esto. Si desea pasar un parámetro de idioma, por ejemplo, hágalo también en su 'dynamic_template_data'.

El campo "dynamic_template_data" funciona pero parece indocumentado: https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/index.html

Esto sigue siendo un problema. ¿Por qué estaba esto cerrado?

La solución alternativa no funciona de forma fiable. Si envío ~ 30 correos electrónicos en un bucle usando el mismo Asunto exacto, obtengo algunos con el tema que envié y otros con (sin asunto).

¿Existe actualmente alguna forma de enviar de manera confiable un asunto personalizado a través de la API?

@ deepai-org Es mejor utilizar los documentos más recientes aquí: https://sendgrid.com/docs/API_Reference/api_v3.html

@vladkosarev ¿Está diciendo que está usando la misma plantilla dinámica con plantilla de sujeto con manubrios (consulte https://github.com/sendgrid/sendgrid-nodejs/issues/713#issuecomment-443206995) y su carga útil de solicitud contiene la datos de plantilla dinámica para el tema y no está utilizando el tema de manera confiable? Si este es el caso, lo mejor es ponerse en contacto con el soporte, ya que esto no es algo que pueda / deba ser abordado por una biblioteca del lado del cliente.

@ childish-sambino Después de un tiempo, el asunto era correcto en todos los correos electrónicos. Parece que hay algo asincrónico durante un tiempo y algunos correos electrónicos recibirán una plantilla de correo electrónico antigua y algunos nuevos.

¿Es esta https://sendgrid.com/docs/API_Reference/api_v3.html documentación correcta? Estoy bastante seguro de que enviar el asunto como se describe en ese documento no funciona. Hasta ahora, la única forma en que funcionó fue la solución alternativa descrita en este ticket.

@vladkosarev Esos son los documentos correctos. Si está utilizando plantillas dinámicas, el asunto debe tener una plantilla y pasar como datos de plantilla dinámica para poder modificarlo por correo electrónico, como se describe en este número. Si no está utilizando plantillas, se utilizará el asunto proporcionado en la carga útil de envío por correo.

En cuanto a por qué se necesitaba cierta sincronización para que el asunto sea correcto en todos los correos electrónicos, lo mejor es ponerse en contacto con el soporte.

@ childish-sambino ¿Puede indicarme en qué parte de los documentos se explica cómo usar el tema en una plantilla dinámica? Todavía no puedo encontrar eso en ningún lugar de ese nuevo enlace. ¡Gracias!

si recuerdo correctamente @vladkosarev , desea establecer el valor del manillar en la propia plantilla para el tema; esto se hace usando la plantilla GUI. Luego, solo haga referencia a ese valor en su código.

image

@aroach gracias pero estoy interesado en ver eso en el documento, no en un comentario sobre github. Por cierto, {{}} no funcionó para mí cuando lo intenté, solo los corchetes triples {{{}}} funcionaron (podría ser el mismo problema de asincronización que antes).

@vladkosarev Parece que se menciona aquí: https://sendgrid.com/docs/ui/sending-email/how-to-send-an-email-with-dynamic-transactional-templates/

Esta plantilla de Handlebars se puede utilizar en el texto, html y líneas de asunto de su plantilla.

@aroach gracias. Acabo de hacer más pruebas y el sujeto tarda un tiempo en 'aplicar' a una plantilla, por lo que parece que no funciona si está probando (editar plantilla / enviar). Si espera 10 minutos, en realidad se aplica y funciona según lo previsto. Podría comunicarme con SG para documentar que las actualizaciones de la plantilla no son en tiempo real (al menos para el tema) y que debe esperar un poco para hacer una prueba. Gracias.

@Whatthefoxsays debería poder perseguir esto y / o hacer las ediciones apropiadas. 👋

@aroach, una cosa que probablemente debería mencionar es que tenemos dos direcciones IP para enviar correos electrónicos. No conozco el funcionamiento interno de SG, pero esa podría ser la razón por la que hay un problema (¿lleva tiempo propagarse al segundo nodo?).

¿Fue útil esta página
0 / 5 - 0 calificaciones