Sendgrid-nodejs: Assunto não muda no Template mail.send ()

Criado em 1 ago. 2018  ·  26Comentários  ·  Fonte: sendgrid/sendgrid-nodejs

Resumo do problema

assunto não muda no email

Passos para reproduzir

chamar sgMail.send (ver abaixo)

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 resulta na seguinte postagem

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

Também tentei enviar 2 e-mails por meio de uma série de mensagens em vez de usar personalizações, mas isso também não funciona.

Finalmente, também tentei colocar o assunto ao lado do campo de origem, ainda não funcionou

Detalhes técnicos:

  • Versão sendgrid em 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"
      }
    },
  • Versão Node.js: 8.11.1
unknown or a hacktoberfest help wanted bug

Comentários muito úteis

Deve ser assim:
"dynamic_template_data": {
"assunto": "seu assunto",
},

vá para https://sendgrid.com/dynamic_templates
e adicione {{{assunto}}} em CONFIGURAÇÕES DO MODELO.

Funciona para mim: +1:

Todos 26 comentários

A solução alternativa que estou usando é adicionar um assunto na interface da web do SendGrid como {{subject}} e, em seguida, passar uma variável de assunto para dynamic_template_data . Parece que as variáveis ​​de modelo funcionam em assuntos, então você pode basicamente passar o assunto inteiro programaticamente dessa maneira.

Olá @falconmick ,

@ wbw20 A solução alternativa funciona, tente fazer isso enquanto investigamos a causa raiz.

@ wbw20 ,

Obrigado por ajudar! Eu editei sua imagem porque ela não contribuiu para a solução. Não tenho certeza de qual era sua intenção.

Obrigado pela atenção,

Elmer

FWIW, vejo um comportamento semelhante com a biblioteca Ruby.

Definir o assunto no objeto de email não substitui nada definido no modelo nas ferramentas da web. Tem que fazer um guiador e adicionar a cada personalização.

Eu também estou encontrando esse problema. Estou lutando para apontar exatamente por que está falhando.

A solução alternativa parece viável, mas é lamentável, pois vai contra a configuração que temos para todos os outros e-mails do SendGrid.

Deve ser assim:
"dynamic_template_data": {
"assunto": "seu assunto",
},

vá para https://sendgrid.com/dynamic_templates
e adicione {{{assunto}}} em CONFIGURAÇÕES DO MODELO.

Funciona para mim: +1:

A solução de @atarabbi deve ser o que você precisa. Continue a comentar neste tópico se ainda tiver problemas. Obrigado!

A solução de @atarabbi deve ser o que você precisa. Continue a comentar neste tópico se ainda tiver problemas. Obrigado!

Mas isso ainda não faz com que as coisas não funcionem de acordo com a forma como a API da biblioteca está documentada para consumo? Definir o assunto como as coisas permitem ainda pareceria quebrado, não?

Sim, o método que os documentos sugerem para mudar de assunto não parece funcionar. Não sei se isso é apenas um problema para dynamic_template_data, mas também estou tendo isso.

Vou tentar usar um modelo dinâmico para a linha de assunto, mas a documentação é surpreendentemente inconsistente

Pelo que estou vendo nos documentos aqui , está documentado para atualizar o assunto do modelo com a variável do guidão (concedido, esta poderia ser uma explicação mais ampla). @baugarten Só para ter certeza, você está dizendo que não está funcionando para você? Você pode apontar onde estamos apontando na direção errada?

Estou vendo que não estamos documentando dynamic_template_data no pacote do cliente .

Além disso, você está usando a versão mais recente da biblioteca v6.3.1?

Definitivamente, quero consertar isso e peça desculpas pela confusão!

FWIW Também estou vendo esse problema na biblioteca Golang , não consigo substituir o assunto do modelo da chamada de API. Se eu não conseguir encontrar uma solução alternativa adequada, farei um problema lá também.

Ugh, os documentos dizem especificamente que o assunto base será substituído por um assunto de personalização, o que não é a mesma coisa que ser capaz de modelar o assunto.

EDIT: Especialmente quando suas próprias bibliotecas não funcionam. Eles adicionam assunto em uma personalização, onde não pode ser usado como modelo. Se você espera que este seja o comportamento documentado, as bibliotecas precisam adicioná-lo ao subobjeto dynamic_template_data.

Também corri para isso, o assunto não parece ter sido sobrescrito, mas é possível usar uma solução alternativa.

Deixar o assunto no 'dynamic_template_data' e se referir a ele no modelo com {{{subject}}} realmente parece funcionar. Além disso, o que percebi é que custom_args não existe mais. Ele é mesclado com as substituições em 'dynamic_template_data'. Infelizmente, os documentos não dizem isso. Se você deseja passar um parâmetro de idioma, por exemplo, faça isso também em seu 'dynamic_template_data'.

O campo "dynamic_template_data" funciona, mas parece não documentado: https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/index.html

Isso ainda é um problema. Por que isso foi fechado?

A solução alternativa não funciona de maneira confiável. Se eu enviar aproximadamente 30 emails em um loop usando exatamente o mesmo Assunto, recebo alguns com o assunto que enviei e outros com (sem assunto).

Existe atualmente uma maneira confiável de enviar assuntos personalizados por meio da API?

@ deepai-org Melhor usar os documentos mais recentes aqui: https://sendgrid.com/docs/API_Reference/api_v3.html

@vladkosarev Você está dizendo que está usando o mesmo modelo dinâmico com modelo de assunto com guiador (consulte https://github.com/sendgrid/sendgrid-nodejs/issues/713#issuecomment-443206995) e sua carga útil de solicitação contém o dados de modelo dinâmico para o assunto e não está usando o assunto de forma confiável? Se for esse o caso, é melhor entrar em contato com o suporte, pois isso não é algo que pode / deve ser tratado por uma biblioteca do lado do cliente.

@ childish-sambino Depois de um tempo, o assunto estava realmente correto em todos os e-mails. Parece que há algo assíncrono acontecendo por um tempo e alguns e-mails terão um modelo de e-mail antigo e alguns novos.

Esta https://sendgrid.com/docs/API_Reference/api_v3.html documentação correta? Tenho certeza de que enviar o assunto conforme descrito nesse documento não funciona. A única maneira de funcionar até agora foi a solução alternativa descrita neste tíquete.

@vladkosarev Esses são os documentos corretos. Se você estiver usando modelos dinâmicos, o assunto deve ser modelado e passado como dados de modelo dinâmico para modificá-lo por e-mail, conforme descrito nesta edição. Se você não estiver usando modelos, o assunto fornecido na carga útil de envio de email será usado.

Quanto ao motivo pelo qual alguma sincronização foi necessária para que o assunto fosse correto para todos os e-mails, melhor entrar em contato com o suporte.

@ childish-sambino Você pode me apontar onde na documentação ele explica como usar o assunto em um modelo dinâmico? Ainda não consigo encontrar isso em nenhum lugar nesse novo link. Obrigado!

se bem me lembro @vladkosarev , você deseja definir o valor do guiador no próprio modelo para o assunto - isso é feito usando a interface do usuário do modelo. Em seguida, apenas faça referência a esse valor em seu código.

image

@aroach obrigado, mas estou interessado em ver isso no documento, não em um comentário no github. A propósito, {{}} não funcionou para mim quando tentei, apenas colchetes triplos {{{}}} funcionaram (pode ser o mesmo problema assíncrono de antes).

@vladkosarev Parece ser mencionado aqui: https://sendgrid.com/docs/ui/sending-email/how-to-send-an-email-with-dynamic-transactional-templates/

Este modelo de guiador pode ser usado nas linhas de texto, html e assunto do seu modelo.

@aroach obrigado. Acabei de fazer mais testes e o assunto demora um pouco para realmente 'aplicar' a um modelo, então parece que não está funcionando se você estiver testando (editar modelo / enviar). Se você esperar 10 minutos, ele realmente será aplicado e funcionará conforme o esperado. Posso entrar em contato com o SG para documentar que as atualizações do modelo não são em tempo real (pelo menos para o assunto) e que você tem que esperar um pouco para fazer um teste. Obrigado.

@Whatthefoxsays deve ser capaz de

@aroach, uma coisa que provavelmente devo mencionar é que temos dois IPs para enviar e-mail. Não sei o funcionamento interno do SG, mas pode ser por isso que há um problema (leva tempo para se propagar para o segundo nó?).

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

TobiahRex picture TobiahRex  ·  3Comentários

agostonbonomi picture agostonbonomi  ·  3Comentários

Chrischuck picture Chrischuck  ·  3Comentários

umarhussain15 picture umarhussain15  ·  3Comentários

thinkingserious picture thinkingserious  ·  4Comentários