Sendgrid-nodejs: El asunto no se establece si se utilizan plantillas dinámicas

Creado en 7 nov. 2018  ·  29Comentarios  ·  Fuente: sendgrid/sendgrid-nodejs

Estaba intentando agregar un asunto para mi correo electrónico con plantillas dinámicas, pero no funciona. ¿Es este un error conocido ya? ¿Puede sugerir alguna solución para este problema?

código de plantilla:

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

enviar función de correo:

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

Comentario más útil

Hola @jlouie ,

¿Su área temática se parece a esto en la interfaz de usuario?

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

Con los mejores deseos,

Elmer

Todos 29 comentarios

Igual que el # 834

@ 10kc-zack ya veo. Entonces es un problema conocido.

Por cierto, ¿qué solución hiciste para solucionarlo?

@ nyel-dev La configuración del asunto de la plantilla en el sitio web SendGrid funciona. El problema es que parece que la API de SendGrid no le permite proporcionar una plantilla cuando activa una plantilla dinámica.

Hola @ nyel-dev,

Creo que en la plantilla transaccional establecería el asunto como {{asunto}}, luego en su código establecería data.subject como "[TEST] My Email Subject" .

Eso funciona para ti?

Con los mejores deseos,

Elmer

Hola @thinkingserious , espero que puedas tener información adicional.

Estoy haciendo la transición de una plantilla heredada a la plantilla transaccional y ahora estoy experimentando este mismo problema (sendgrid-nodejs v6.3.1, Node: v8.11.4) incluso después de reemplazar el campo de asunto de la plantilla transaccional con {{subject}} . No he configurado explícitamente los envoltorios de sustitución a través de setSubstitutionWrappers() y acabo de volver al conjunto de manillares predeterminado (aunque intenté configurarlos también durante la prueba).

Confirmé que estoy pasando una propiedad subject (sin comillas ni caracteres especiales) como msg.subject en mi primer caso de prueba, msg.dynamic_template_data.subject en mi segundo caso de prueba y con ambos configurado para mi tercer caso de prueba y los correos electrónicos resultantes recibidos aún no tienen el asunto reemplazado como era de esperar. El asunto del correo electrónico muestra "(sin asunto)".

Sin embargo, probar la plantilla en el sitio de sendgrid en modo Vista previa y configurar los Datos de prueba reemplaza el texto como se esperaba.

Cualquier ayuda sería apreciada. ¡Gracias!

* EDITAR *
También debo mencionar que las sustituciones en el cuerpo del mensaje se reemplazan como se esperaba, pero no en la línea de asunto.

Hola @jlouie ,

He aquí un ejemplo completo . ¡Espero que eso ayude!

Con los mejores deseos,

Elmer

@thinkingserious el asunto no se muestra en el correo electrónico lo mismo con el ejemplo

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

Hola @jlouie ,

He aquí un ejemplo completo . ¡Espero que eso ayude!

Con los mejores deseos,

Elmer

@thinkingserious : Desafortunadamente, no es así. Todavía me falta una línea de Asunto en el correo electrónico enviado / recibido, como @nicholasess.

Hola @jlouie ,

¿Su área temática se parece a esto en la interfaz de usuario?

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

Con los mejores deseos,

Elmer

Por cierto, pude resolver este problema utilizando Establecer asunto en la interfaz de plantilla de Sendgrid. Gracias @thinkingserious

Sugiero que la configuración cambie al menú como código, datos de prueba.
image

El lugar donde se encuentra la configuración, está oculto: /

¡Gracias por los comentarios @nicholasess! Lo pasaré al equipo de diseño.

Me encontré con el mismo problema y tuve que confiar en esta solución, pero no habría funcionado sin examinar los problemas.

Esto es muy contrario a la intuición, ya que el documento dice que establece el asunto en la llamada a la API (y detalla cómo puede configurarlo globalmente para el mensaje y anularlo en personalizaciones, lo que obviamente se pierde con esta solución).

También perdemos la función "Asunto predeterminado establecido en la página de administración, que se puede anular en la llamada API". No, con la solución, siempre tenemos que especificar un tema para las plantillas afectadas.

(A menos que haya una manera de establecer el valor predeterminado en la interpolación {{}}. Verificaré el documento, lo que he encontrado hasta ahora es un método de interpolación que usa guiones, con el que no estoy familiarizado).

@pensamientosserios

¿Por qué está cerrado este problema? No está arreglado.

Sé que puede parecer extraño, pero los chicos se aseguran de que no hayan abierto ventanas o pestañas con la misma pantalla. Sendgrid ui tiene autoguardado que puede reescribir todos los datos que guardaste antes.

usar en materias {{subject}}

y enviar como variable como otras variables,

de esta manera funciona.

Estuve atascado en este problema durante tanto tiempo porque estaba siguiendo los documentos y pensé que había hecho algo mal. Como estoy migrando desde plantillas heredadas, pensé que la API seguiría siendo la misma y me sorprendió ver que de repente no funciona como se esperaba.

¿Hay algún plan para actualizar la documentación a v3/mail/send para reflejar correctamente este cambio?

La única forma en que pude resolver este problema fue con _triple-stash_:

{{{ subject }}}

Según este artículo https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/transactional-templates.md

Puede confirmar el uso de llaves triples en lugar de dobles en el campo del tema funciona

Siempre que guardo el triple curlys o cualquier otro código en la línea de asunto, el código vuelve automáticamente después de unos minutos al estándar <% subject%>.

¿Hay alguien más tiene el mismo problema?

¿Hay alguien más tiene el mismo problema?

He visto algo como esto cuando tenía dos ventanas abiertas. SendGrid se guarda automáticamente, por lo que si tiene dos ventanas abiertas, se cancelarán entre sí.

La forma en que funcionó para mí:

usar en el campo de asunto en la interfaz de usuario de SendGrid: {{{subject}}}

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

Sugerencia : ustedes realmente deberían trabajar en sus documentos. Me refiero a que en realidad están tan dispersos y fragmentos obsoletos.

Los corchetes triples todavía funcionan, solo estoy verificando si esa sigue siendo la solución oficial.

¡Gracias!

image

@tcukanoot Sí.

¡Vuelve a abrir el problema! Los documentos aún no son correctos, lo que sugiere que subject se establezca en el nivel superior de la solicitud. Sin embargo, debe incluirse en dynamic_template_data y el asunto de la plantilla debe establecerse como {{subject}} o cualquier otra clave dinámica. ¡Esto está abierto a partir de 2018 y no se introdujeron cambios en la documentación desde entonces!

Recibo un error de solicitud 400 del servidor cuando intento usar sustituciones o dynamic_template_data

Corrija sus documentos. dynamic_template_date no debería ser válido según https://github.com/sendgrid/sendgrid-python/blob/main/use_cases/kitchen_sink.md y la documentación v3
Sin embargo, la gente informa que les funciona

¿Qué está pasando? 🤔

La forma en que funcionó para mí:

usar en el campo de asunto en la interfaz de usuario de SendGrid: {{{subject}}}

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

Sugerencia : ustedes realmente deberían trabajar en sus documentos. Me refiero a que en realidad están tan dispersos y fragmentos obsoletos.

Cómo hacerlo en PHP. ¡Comparte el código!

¿Los documentos actualmente son incorrectos al sugerir que el asunto se envíe como un parámetro de nivel superior?

La forma en que funcionó para mí:

usar en el campo de asunto en la interfaz de usuario de SendGrid: {{{subject}}}

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

Sugerencia : ustedes realmente deberían trabajar en sus documentos. Me refiero a que en realidad están tan dispersos y fragmentos obsoletos.

¡Esto funcionó para mí! Tu documento debería verse así:

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()))
¿Fue útil esta página
1 / 5 - 1 calificaciones