javascript - 使用 Nodejs 的 SendGrid 模板中的变量替换不起作用
问题描述
按照 SendGrids github 上的USE CASE确实设法用正确的模板向我发送电子邮件,但替换显然不起作用,并且在生成的电子邮件中留空。服务器端:
const sgmailer = require("@sendgrid/mail");
sgmailer.setApiKey(process.env.SENDGRID_API_KEY);
sgmailer.setSubstitutionWrappers('{{', '}}');
const msg = {
to: '...',
from: 'sender@example.org',
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 的动态模板,因此我不能使用“substitutions”标签,而必须使用“dynamic_template_data”标签,请参阅此问题。将 msg-object 更改为
const msg = {
to: '...',
from: 'sender@example.org',
subject: 'Hello world',
text: 'Hello plain world!',
html: '<p>Hello HTML world!</p>',
templateId: '...',
dynamic_template_data: {
name: 'Some One',
city: 'Denver',
},
};
有用。据我所知,这在 SendGrid 文档中没有记录。
推荐阅读
- jupyter - 在 jupyter 中无法获得 jfricas 的任何输出
- excel - 为存储在文件服务器上的现有工作簿设置默认工作表模板
- python - 如何将变换方法应用于部分数据框
- javascript - 如何在循环内调用 async/await?
- python - 如何在 keras 中为 seq2seq 模型添加自注意力
- python - 每次刷新我的html页面时如何刷新python文件?
- reactjs - 如何在返回布尔值而不重新获取特定查询的突变后更新 Apollo 缓存?
- python - 如何将 3 维张量绘制为具有不同颜色的管
- python - 使用 ImageTK(PIL) 旋转图像被裁剪
- python - 为什么我们不能用这种方法打印特定的文本文件行?