Eu estava tentando adicionar assunto ao meu e-mail com modelos dinâmicos, mas não está funcionando. Já é um bug conhecido? Você pode sugerir alguma solução alternativa para esse problema?
código do modelo:
<html>
<head>
<title></title>
</head>
<body>
<p> Hello <span>{{test_name}}!</span></p>
</body>
</html>
função enviar e-mail:
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);
Igual a # 834
@ 10kc-zack eu vejo. É um problema conhecido então.
A propósito, que solução alternativa você fez para corrigir isso?
@ nyel-dev A configuração do assunto do modelo no site SendGrid funciona. O problema é que parece que a API do SendGrid não permite que você forneça um modelo ao acionar um modelo dinâmico.
Olá @ nyel-dev,
Eu acredito que no modelo transacional você definiria o assunto como {{subject}}, então em seu código você definiria data.subject
como "[TEST] My Email Subject"
.
Isso funciona para você?
Obrigado pela atenção,
Elmer
Olá, @thinkingserious . Espero que você tenha informações adicionais.
Estou fazendo a transição de um modelo legado para o modelo transacional e estou tendo o mesmo problema agora (sendgrid-nodejs v6.3.1, Node: v8.11.4), mesmo depois de substituir o campo de assunto do modelo transacional por {{subject}}
. Não defini explicitamente os invólucros de substituição via setSubstitutionWrappers()
e acabei de voltar ao conjunto de guiador padrão (embora eu tenha tentado defini-los também durante o teste).
Confirmei que estou passando uma propriedade subject
(sem aspas ou caracteres especiais) como msg.subject
em meu primeiro caso de teste, msg.dynamic_template_data.subject
em meu segundo caso de teste e com ambos definido para o meu terceiro caso de teste e os emails resultantes recebidos ainda não têm o assunto substituído como eu esperava. O assunto do e-mail mostra "(sem assunto)".
Porém, testar o próprio modelo no site sendgrid no modo de visualização e definir os dados de teste substitui o texto conforme o esperado.
Qualquer ajuda seria apreciada. Obrigado!
* EDITAR *
Devo também mencionar que as substituições no corpo da mensagem são substituídas conforme o esperado, mas não na linha de assunto.
@thinkingserious o assunto não
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>"
}
Olá @jlouie ,
Aqui está um exemplo completo . Espero que ajude!
Obrigado pela atenção,
Elmer
@thinkingserious : Infelizmente, não. Ainda estou tendo uma linha de assunto ausente no e-mail enviado / recebido, assim como @nicholasess.
Olá @jlouie ,
A sua área de assunto se parece com isso na IU?
Obrigado pela atenção,
Elmer
A propósito, consegui resolver esse problema usando Set Subject na interface do template do Sendgrid. Obrigado @thinkingserious
Eu sugiro que as configurações mudem para o menu como código, dados de teste.
O local onde estão as configurações, fica escondido: /
Obrigado pelo feedback @nicholasess! Vou repassar para a equipe de design.
Eu encontrei o mesmo problema e tive que confiar nesta solução alternativa, mas não teria funcionado sem peneirar os problemas.
Isso é muito contra-intuitivo, pois o documento diz que você define o assunto na chamada da API (e detalha como você pode defini-lo globalmente para a mensagem e substituí-lo nas personalizações, o que obviamente é perdido com essa solução alternativa).
Também perdemos o recurso "assunto padrão definido na página de administração, que pode ser substituído na chamada de API". Não, com a solução alternativa, sempre temos que especificar um assunto para os modelos afetados.
(A menos que haja uma maneira de definir o padrão na {{}} interpolação. Vou verificar o documento para isso, o que descobri até agora é sobre um método de interpolação usando travessões, com o qual não estou completamente familiarizado.)
@thinkingserious
Por que este problema foi encerrado? Não é fixo.
Eu sei que pode parecer estranho, mas pessoal, certifique-se de que você não abriu janelas ou guias com a mesma tela. Sendgrid ui tem autosave que pode reescrever todos os dados que você salvou antes.
usar em assuntos {{assunto}}
e enviar como variável como outras variáveis,
assim funciona.
Fiquei preso neste problema por muito tempo porque estava seguindo os documentos e pensei que fiz algo errado. Como estou migrando de modelos legados, pensei que a API permaneceria a mesma e fiquei surpreso ao ver que de repente ela não funcionou como esperado.
Existem planos para atualizar a documentação para v3/mail/send
para refletir adequadamente esta mudança?
A única maneira de resolver esse problema foi com _triple-stash_:
{{{ subject }}}
De acordo com este artigo https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/transactional-templates.md
Pode confirmar usando três chaves em vez de chaves duplas no campo de assunto funciona
Sempre que salvo o triplo curlys ou qualquer outro código na linha de assunto, o código é revertido automaticamente após alguns minutos para o padrão <% subject%>.
Alguém mais está tendo o mesmo problema?
Alguém mais está tendo o mesmo problema?
Eu vi algo assim quando abri duas janelas. SendGrid salva automaticamente, então, se você tiver duas janelas abertas, elas se cancelarão.
A maneira como funcionou para mim:
use no campo de assunto na IU do SendGrid: {{{subject}}}
envie "subject": "test"
em message.dynamic_template_data
Sugestão : Vocês realmente deveriam trabalhar em seus documentos. Na verdade, eles estão tão espalhados e pedaços estão desatualizados.
Os colchetes triplos ainda estão funcionando, estou apenas verificando se essa ainda é a solução oficial.
Obrigado!
@tcukanoot Sim.
Por favor, reabra o problema! Os documentos ainda não estão corretos, sugerindo que subject
seja definido no nível superior da solicitação. No entanto, deve ser incluído em dynamic_template_data
e o assunto no modelo deve ser definido como {{subject}}
ou qualquer outra chave dinâmica. Está aberto a partir de 2018 e nenhuma alteração na documentação foi introduzida desde então!
Recebo um erro de solicitação 400 do servidor quando tento usar substituições ou dynamic_template_data
Por favor, corrija seus documentos. dynamic_template_date não deve ser válido com base na https://github.com/sendgrid/sendgrid-python/blob/main/use_cases/kitchen_sink.md e na documentação da v3
No entanto, as pessoas estão relatando que funciona para elas
o que está acontecendo? 🤔
A maneira como funcionou para mim:
use no campo de assunto na IU do SendGrid:
{{{subject}}}
envie
"subject": "test"
emmessage.dynamic_template_data
Sugestão : Vocês realmente deveriam trabalhar em seus documentos. Na verdade, eles estão tão espalhados e pedaços estão desatualizados.
Como fazer em PHP. Por favor, compartilhe o código!
Os documentos estão atualmente apenas incorretos ao sugerir que o assunto seja enviado como um parâmetro de nível superior?
A maneira como funcionou para mim:
use no campo de assunto na IU do SendGrid:
{{{subject}}}
envie
"subject": "test"
emmessage.dynamic_template_data
Sugestão : Vocês realmente deveriam trabalhar em seus documentos. Na verdade, eles estão tão espalhados e pedaços estão desatualizados.
Isso funcionou para mim! Seu documento deve ser semelhante a:
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()))
Comentários muito úteis
Olá @jlouie ,
A sua área de assunto se parece com isso na IU?
Obrigado pela atenção,
Elmer