Sendgrid-nodejs: La sustitución no funciona

Creado en 7 sept. 2017  ·  17Comentarios  ·  Fuente: sendgrid/sendgrid-nodejs

Resumen de asuntos

Migré de sendgrid 2.0.0 a @sendgrid/mail 6.1.2 , las sustituciones ya no funcionan

Pasos para reproducir

SendgridService.prototype.sendTestEmail = function () {
  var text = 'Hi %DISPLAY_NAME%\n\n'
  const msg = {
    to: '[email protected]',
    subject: 'Test Email',
    from: {email: '[email protected]', name: 'Test'},
    text: text,
    substitutions: {
      "%DISPLAY_NAME%": 'Test'
    }
  }
  return sendgrid.send(msg)
}

Detalles técnicos:

  • sendgrid-nodejs Versión: master (última confirmación: [número de confirmación])
  • Versión de Node.js: 8.4.0
help wanted question

Comentario más útil

@sydneyhenrard ,

Por ayudarnos a resolver este problema, nos gustaría enviarle un botín como muestra de nuestra gratitud.

¡Gracias por apoyar SendGrid!

Con los mejores deseos,

Elmer

Todos 17 comentarios

Hola @sydneyhenrard ,

He aquí un ejemplo completo.

Parece que necesita configurar substitutionWrappers . En su caso, sería % . Luego, en el objeto substitutions , dejaría los caracteres % fuera.

Con los mejores deseos,

Elmer

¿Existe una convención sobre las variables?

SendgridService.prototype.sendTestEmail = function () {
  var text = 'Hi %DISPLAY_NAME% - %displayname%\n\n'
  const msg = {
    to: '[email protected]',
    subject: 'Test Email',
    from: {email: '[email protected]', name: 'Test'},
    text: text,
    substitutionWrappers: ['%', '%'],
    substitutions: {
      DISPLAY_NAME: 'Test',
      displayname: 'Test'
    }
  }
  return sendgrid.send(msg)
}

El correo electrónico recibido:

Hi %DISPLAY_NAME% – Test

Hola @sydneyhenrard ,

Pude reproducir este problema. He agregado esto a nuestro trabajo pendiente para una solución. Parece que dada la sustitución n, la sustitución 0 no se está configurando correctamente.

Con los mejores deseos,

Elmer

@thinkingserious, ¿esto te

Es un problema con el SDK. Sin embargo, no estoy muy seguro de cuál es exactamente el problema. Planeo examinar la carga útil para ayudar a solucionar problemas.

Si uso la variable camelCase, no tengo ningún problema con las sustituciones incluso para la sustitución 0

Gracias @sydneyhenrard ,

Eso debería ayudar a llegar a la causa raíz más rápido :)

Creo que puedo saber cuál es el problema, déjame investigar.

442 debería arreglar esto 👍

Fusionado como v6.1.3, ¡gracias @adamreisnz!

@sydneyhenrard ,

Por ayudarnos a resolver este problema, nos gustaría enviarle un botín como muestra de nuestra gratitud.

¡Gracias por apoyar SendGrid!

Con los mejores deseos,

Elmer

Tuve el mismo problema en 01/2018. cambiamos nuestras variables de sustitución de% companyname% a% company_name% porque las variables de una sola palabra no funcionaban. arreglado inmediatamente.

Hola @greglbyv ,

¿Qué versión del SDK estás usando? ¡Gracias!

Con los mejores deseos,

Elmer

¿Se supone que las sustituciones funcionan cuando se usa una plantilla de diseño? Puedo hacer que funcionen solo cuando construyo la plantilla a mano, las construidas con la herramienta de diseño nunca funcionan.

@airstofather ,

Para ayudarte, necesitaré más detalles. 1) ¿A qué plantilla te refieres? 2) ¿Podría proporcionar un código de muestra? Tanto la plantilla HTML como el código de Node.js. ¡Gracias!

Además, podría ser mejor abrir un problema por separado. ¡Gracias!

Con los mejores deseos,

Elmer

@pensamientosserios

Por favor ignore mi comentario anterior. Después de su respuesta, volví a mirarlo con ojos nuevos y era un espacio adicional en la variable interpolada lo que estaba causando el problema que no detecté la primera vez.

Todo está funcionando como se anuncia. Gracias.

@thinkingserious Lo he intentado todo, camelcase, subrayado. La variable aún no se completa, cuando hago la prueba a través de la interfaz de usuario de sendgrid y paso la variable, funciona bien. Simplemente no funcionaría a través de las funciones de la nube de base de fuego. Aqui esta mi codigo

Estoy usando "@ sendgrid / mail": "^ 6.3.1"

const msgbody = {
          to: userData.email,
          from: '[email protected]',
          subject: 'Registration Complete',
          templateId: 'd-dffc1e7c8a4a4ed5a4384eded1701f65',
          substitutionWrappers: ['{{', '}}'],
          substitutions: {
            first_name: userData.firstName
          }
        }
¿Fue útil esta página
0 / 5 - 0 calificaciones