После 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, я не могу использовать тег "подстановки", но вместо этого должен использовать тег "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.