如何使用Node.js向SendGrid动态模板发送JSON对象
SendGrid Node.js 动态模板参数配置解答
你没有遗漏公开文档内容,官方的Node.js动态模板配置示例没有放在快速入门或模板使用文档中,而是散落在SDK的示例代码片段里,很容易被忽略。
核心问题解答
- 动态JSON传入规则:不需要放在请求头,直接在
msg请求参数对象中配置,对应的键名为dynamicTemplateData,直接把你要传入的动态JSON对象作为该键的值即可。 - 模板ID配置规则:同样在
msg请求参数对象中配置,对应的键名为templateId,值为你在SendGrid后台创建动态模板后生成的ID字符串。
Node.js 代码示例
首先安装依赖:npm install @sendgrid/mail
发信参考代码:
const sgMail = require('@sendgrid/mail') // 配置你的SendGrid API Key sgMail.setApiKey(process.env.SENDGRID_API_KEY) const msg = { to: '收件人邮箱地址', from: '发件人邮箱地址(需在SendGrid后台完成域名/地址验证)', // 配置模板ID templateId: '你在SendGrid后台获取的动态模板ID', // 配置动态数据 dynamicTemplateData: { // 这里的属性名要和模板里的Handlebars变量名完全匹配,大小写敏感 username: '张三', orderId: '123456', orderAmount: 99.9 } } // 发送邮件 sgMail .send(msg) .then(() => { console.log('邮件发送成功') }) .catch((error) => { console.error(error) })
自主排查步骤
- 先确认使用的是
@sendgrid/mailv7及以上版本的SDK,旧版本的动态数据配置键名不同,会导致配置不生效 - 直接查看本地安装的SDK的TypeScript类型定义文件,搜索
MailDataRequired接口,即可看到所有合法的配置参数名,优先级高于在线文档 - 先用最小可复现配置测试:仅保留
to、from、templateId、dynamicTemplateData四个必填相关参数,确认模板可以正常渲染后再添加其他配置项 - 若变量渲染失败,直接打印
dynamicTemplateData的结构,确认属性名、嵌套层级和模板中定义的Handlebars变量完全一致,该配置对大小写敏感
内容的提问来源于stack exchange,提问作者Leonard
相关产品推荐
相关产品推荐

