6

尝试将事务模板与 azure function sendgrid integration (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发送完全相同的对象时,一切正常。

很想在这里得到帮助,因为我在我的天蓝色功能上做错了什么。

4

1 回答 1

5

您正确地完成了所有操作,因为您可以按预期接收电子邮件。

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

对于 2.x 功能(检查 Azure 门户上的功能应用设置,请参阅运行时版本: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. 通过 Platform Features -> Advanced Tools(Kudu) -> Debug Console (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 功能(Runtime ~1),恐怕我们必须使用sendgrid 节点模块手动发送电子邮件,1.x 功能中的 Sendgrid 版本被锁定,因此无法更新。

于 2018-10-24T08:18:40.423 回答