Подстановка переменных в шаблонах SendGrid с Nodejs не работает

1

После USE CASE on SendGrids github удаляет мне электронное письмо с правильным шаблоном, но замены, по-видимому, не работают и остаются пустыми в полученном электронном письме. Серверная сторона:

const sgmailer = require("@sendgrid/mail");
sgmailer.setApiKey(process.env.SENDGRID_API_KEY);
sgmailer.setSubstitutionWrappers('{{', '}}');

const msg = {
    to: '...',
    from: '[email protected]',
    subject: 'Hello world',
    text: 'Hello plain world!',
    html: '<p>Hello HTML world!</p>',
    templateId: '...',
    substitutions: {
        name: 'Some One',
        city: 'Denver',
    },
};
sgmailer.send(msg)

HTML в шаблоне:

<html>
<head>
    <title></title>
</head>
<body>
Hello {{name}},
<br /><br/>
I'm glad you are trying out the template feature!
<br /><br/>
<%body%>
<br /><br/>
I hope you are having a great day in {{city}} :)
<br /><br/>
</body>
</html>

Результирующая электронная почта в моем почтовом ящике:

Привет,

Я рад, что вы пытаетесь использовать шаблон!

Надеюсь, у вас отличный день в :)

Здесь переменные явно отсутствуют. Как правильно заменить переменные?

Теги:
sendgrid-api-v3
sendgrid-templates

1 ответ

3
Лучший ответ

Поскольку я использовал динамические шаблоны из SendGrid, я не могу использовать тег "подстановки", но вместо этого должен использовать тег "dynamic_template_data", см. Эту проблему. При изменении msg-объекта на

const msg = {
    to: '...',
    from: '[email protected]',
    subject: 'Hello world',
    text: 'Hello plain world!',
    html: '<p>Hello HTML world!</p>',
    templateId: '...',
    dynamic_template_data: {
        name: 'Some One',
        city: 'Denver',
    },
};

оно работает. Насколько мне известно, это не документировано в документации SendGrid.

  • 0
    это работает, где вы нашли это.
  • 0
    Ссылка «Смотрите эту проблему» на следующую проблему GitHub: github.com/sendgrid/sendgrid-nodejs/issues/676
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню