Sendgrid-nodejs: A substituição não está funcionando

Criado em 7 set. 2017  ·  17Comentários  ·  Fonte: sendgrid/sendgrid-nodejs

Resumo do problema

Eu migrei de sendgrid 2.0.0 para @sendgrid/mail 6.1.2 , as substituições não estão mais funcionando

Passos para reproduzir

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)
}

Detalhes técnicos:

  • Versão sendgrid-nodejs: master (commit mais recente: [número do commit])
  • Versão Node.js: 8.4.0
help wanted question

Comentários muito úteis

@sydneyhenrard ,

Por nos ajudar a resolver esse problema, gostaríamos de enviar alguns brindes como um símbolo de nossa gratidão.

Obrigado por apoiar SendGrid!

Obrigado pela atenção,

Elmer

Todos 17 comentários

Olá @sydneyhenrard ,

Aqui está um exemplo completo.

Parece que você precisa definir substitutionWrappers . No seu caso, isso seria % . Então, no objeto substitutions , você deixaria os caracteres % fora.

Obrigado pela atenção,

Elmer

Existe uma convenção sobre variável?

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)
}

O email recebido:

Hi %DISPLAY_NAME% – Test

Olá @sydneyhenrard ,

Consegui reproduzir este problema. Eu adicionei isso ao nosso backlog para uma correção. Parece que dada a substituição n, a substituição 0 não está sendo definida corretamente.

Obrigado pela atenção,

Elmer

@thinkingserious isso é do seu lado ou um problema com o SDK do Node?

É um problema com o SDK. Não tenho certeza de qual é exatamente o problema. Pretendo examinar a carga útil para ajudar a solucionar o problema.

Se eu usar a variável camelCase, não tenho problemas com as substituições, mesmo para a substituição 0

Obrigado @sydneyhenrard ,

Isso deve ajudar a chegar à causa raiz mais rápido :)

Acho que posso saber qual é o problema, deixe-me investigar.

442 deve consertar isso 👍

Mesclado como v6.1.3, obrigado @adamreisnz!

@sydneyhenrard ,

Por nos ajudar a resolver esse problema, gostaríamos de enviar alguns brindes como um símbolo de nossa gratidão.

Obrigado por apoiar SendGrid!

Obrigado pela atenção,

Elmer

teve o mesmo problema em 01/2018. mudou nossas variáveis ​​de substituição de% companyname% para% company_name% porque variáveis ​​de palavra única não estavam funcionando. consertado imediatamente.

Olá @greglbyv ,

Qual versão do SDK você está usando? Obrigado!

Obrigado pela atenção,

Elmer

As substituições devem funcionar ao usar o modelo de design construído? Só consigo fazer com que funcionem quando construo o modelo à mão; aqueles criados com a ferramenta de design nunca funcionam.

@airstofather ,

Para ajudá-lo, precisarei de mais detalhes. 1) A qual modelo você está se referindo? 2) Você poderia fornecer o código de amostra? Tanto o HTML do modelo quanto o código Node.js. Obrigado!

Além disso, pode ser melhor abrir um problema separado. Obrigado!

Obrigado pela atenção,

Elmer

@thinkingserious

Por favor, ignore meu comentário anterior. Depois de sua resposta, voltei a olhar para ele com novos olhos e era um espaço extra na variável interpolada que estava causando o problema que não entendi da primeira vez.

Tudo está funcionando conforme anunciado. Obrigado.

@thinkingserious eu tentei de tudo, camelcase, underscore. A variável ainda não iria preencher, quando eu faço o teste por meio da IU do sendgrid e passo a variável, ele funciona bem. Ele simplesmente não funcionaria por meio de funções de nuvem do Firebase. Aqui está o meu código

Estou 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
          }
        }
Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

mikemaccana picture mikemaccana  ·  4Comentários

wooyah picture wooyah  ·  4Comentários

umarhussain15 picture umarhussain15  ·  3Comentários

Loriot-n picture Loriot-n  ·  4Comentários

nicoasp picture nicoasp  ·  3Comentários