与SendGrid的NodeJS的模板中的变量替换不工作(Variable substitution

2019-09-30 20:57发布

继用例上SendGrids github上确实设法给我发电子邮件与正确的模板,但不换人显然没有工作,在生成的电子邮件是空白。 服务器端:

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> 

导致我的收件箱邮件:

你好 ,

我很高兴你想出来的模板功能!

我希望你有一个伟大的日子:)

这里的变量显然缺少。 如何正确的替代变量?

Answer 1:

因为我是用从SendGrid 动态模板,我不能使用“替代品”的标签,而必须使用“dynamic_template_data”标签,看到这个问题 。 当改变MSG-对象

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的文档中,据我可以看到记录。



文章来源: Variable substitution in SendGrid templates with Nodejs does not work