使用“&”通过 sendgrid 发送模板电子邮件时发出警告

Warning while sending template email via sendgrid with '&'

我在 sendgrid api v3 的帮助下发送了一封电子邮件,但收到了 warning/error:

Content with characters ', " or & may need to be escaped with three brackets {{{ content }}}

在我的 api json 中,我添加了一个包含 & 字符的 link:

{"dynamic_template_data": {"link":"...&..."}}

在我的模板中,我使用了三个括号 {{{ link }}}

一切都按预期工作 - 电子邮件包括。 link 已发送 - 但我总是收到 warning/error。

我是否遗漏了 json 中的内容?

我查看了他们的 node.js 代码,只要任何内容​​字符串包含 (",',&),它就会 console.warn 您看到的消息。

if (/['"&]/.test(value)) {
   console.warn(DYNAMIC_TEMPLATE_CHAR_WARNING);
}

参见:https://github.com/sendgrid/sendgrid-nodejs/blob/47b6a5cd583cc10544ac19434419bdda5272b107/packages/helpers/classes/mail.js

您可以注意到在下面的 sendgrid 电子邮件模板中使用 2 个和 3 个括号的区别:

您可以在配置中设置 hideWarning: true

样本

const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(process.env.SENDGRID_API_KEY);
const msg = {
  to: 'recipient@example.org',
  from: 'sender@example.org',
  templateId: 'd-f43daeeaef504760851f727007e0b5d0',
  dynamic_template_data: {
    subject: 'Testing Templates',
    name: 'Some One',
    city: 'Denver',
    company: 'Recipient & Sender'
  },
  hideWarnings: true // now the warning won't be logged
};
sgMail.send(msg);