替换在通过 Firebase 函数的发送网格中不起作用



我在通过Firebase Cloud Functions从Sendgrid发送的电子邮件中添加substitutions数据时遇到问题。

这是我的function

exports.firestoreEmail = functions.firestore
.document('users/{id}')
.onCreate(snap => {
const user = snap.data();
const msg = {
to: user.email,
from: 'example@example.com',
subject: `${user.firstName}, please Verify Your Email Address`,
templateId: 'templateID',
substitutionWrappers: ['{{', '}}'],
substitutions: {
firstName: user.firstName,
email: user.email,
id: user.id
}
};
return sgMail
.send(msg)
.then(() => console.log('email sent!'))
.catch(err => console.log(err));
});

templateId事务模板是

<html>
<head></head>
<body>{{firstName}} - {{email}} - {{id}}</body>
</html>

这会按预期向user.email返回一封电子邮件,但在substitutions数据应位于的位置带有空白。

按照这里的文档和用例,我也尝试添加

sgMail.setSubstitutionWrappers('{{', '}}');

到全球setSubstitutionWrappers.仍然不起作用。

我还console.log(user)它返回要传递给控制台中substitutions的数据。

我错过了什么?数据可用,电子邮件格式正确,并且该功能完全遵循 SendGrid 案例。

几个小时后我设法弄清楚了这一点,意识到substitutionssubstitutionWrappers适用于遗留事务模板

相反,对于v3API,您应该使用dynamic_template_data而不是substitutions,并且substitutionWrappers似乎设置为车把{{ }}

dynamic_template_data: {
firstName: user.firstName,
email: user.email,
id: user.id
}

下次,我一定会阅读而不是浏览文档......很可能不是。

相关内容

  • 没有找到相关文章

最新更新