尝试将事务模板与azure函数sendgrid集成(javaScript)结合使用,我正在发送以下对象(已删除的电子邮件地址等):
const message =
{
"personalizations":[
{
"to":[
{
"email":"[MY_EMAIL]",
"name":"Rotem"
}
],
"dynamic_template_data":{
"rotem_test1":"wow"
}
}
],
"from":{
"email":"[FROM_EMAIL]",
"name":"name"
},
"reply_to":{
"email":"[REPLY_EMAIL]",
"name":"name"
},
"template_id":"[CORRECT_TEMPLATE_ID]",
"tracking_settings":{
"click_tracking":{
"enable":true
}
}
}
context.done(null,message);
还尝试使用context.done(null,JSON.stringify(message))
获得相同的结果:
我收到了来自正确模板的电子邮件,但没有任何替代。
使用https://api.sendgrid.com/v3/mail/send
发送完全相同的对象时
使用邮递员的API一切正常。
很乐意在这里获得帮助,以了解我在使用azure函数时做错了什么。
答案 0 :(得分:4)
您所做的一切都正确无误,可以按预期接收电子邮件。
问题是由SDK版本引起的。属性dynamic_template_data
刚刚添加到最新的9.10.0 Sendgrid C# SDK中,但是绑定扩展名仍然使用旧版本,该版本不知道dynamic_template_data
是什么。
对于2.x功能(在Azure门户上检查Function应用程序设置,请参阅运行时版本:2.xxx(〜2)),我们可以在扩展扩展之前手动安装新版本的SDK。
如果您在本地开发
<PackageReference Include="Sendgrid" Version="9.10.0" />
。func extensions install
以还原软件包。Azure门户上的其他
<PackageReference Include="Sendgrid" Version="9.10.0" />
并保存更改。dotnet build extensions.csproj -o bin --no-incremental --packages D:\home\.nuget
Build succeeded
后,启动功能应用程序。对于1.x函数(运行时〜1),恐怕我们必须使用sendgrid node module手动发送电子邮件,因为1.x函数中的Sendgrid版本已锁定,因此无法更新。