dynamic_template_data不适用于sendgrid和Azure函数集成

时间:2018-10-23 15:03:48

标签: azure azure-functions sendgrid sendgrid-templates

尝试将事务模板与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函数时做错了什么。

1 个答案:

答案 0 :(得分:4)

您所做的一切都正确无误,可以按预期接收电子邮件。

问题是由SDK版本引起的。属性dynamic_template_data刚刚添加到最新的9.10.0 Sendgrid C# SDK中,但是绑定扩展名仍然使用旧版本,该版本不知道dynamic_template_data是什么。

对于2.x功能(在Azure门户上检查Function应用程序设置,请参阅运行时版本:2.xxx(〜2)),我们可以在扩展扩展之前手动安装新版本的SDK。

如果您在本地开发

  1. 转到功能项目目录,删除bin,obj文件夹。
  2. 在功能项目下编辑extensions.csproj,添加最新版本的Sendgrid <PackageReference Include="Sendgrid" Version="9.10.0" />
  3. 在此目录中打开控制台(终端,Powershell等),输入func extensions install以还原软件包。

Azure门户上的其他

  1. 停止功能应用程序。
  2. 通过平台功能->高级工具(Kudu)->调试控制台(CMD)访问kudu控制台
  3. 导航到D:\ home \ site \ wwwroot
  4. 删除bin目录
  5. 编辑extensions.csproj,添加<PackageReference Include="Sendgrid" Version="9.10.0" />并保存更改。
  6. 在下面的控制台中,输入dotnet build extensions.csproj -o bin --no-incremental --packages D:\home\.nuget
  7. 看到Build succeeded后,启动功能应用程序。

对于1.x函数(运行时〜1),恐怕我们必须使用sendgrid node module手动发送电子邮件,因为1.x函数中的Sendgrid版本已锁定,因此无法更新。