我有一个逻辑应用程序,其触发器是接收电子邮件。它将我的电子邮件正文传递给 azure 函数。然后我的函数获取电子邮件的内容,并将其转化为 json 对象,供我的逻辑应用程序的其余部分使用。
目前,如果我在 azure 函数中硬编码 JSON 对象的输出,所有步骤都能完成。但当我试图读取电子邮件正文数据并将其作为 json 对象返回时,它以 500 错误出错
以下是我的函数的代码
public static async Task<HttpResponseMessage> Run(HttpRequest req, ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string Name = req.Query["Name"];
string PhoneNumber = req.Query["PhoneNumber"];
string SSN = req.Query["SSN"];
string Email = req.Query["Email"];
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic data = JsonConvert.DeserializeObject(requestBody);
Name = Name ?? data?.Name;
PhoneNumber = PhoneNumber ?? data?.PhoneNumber;
SSN = SSN ?? data?.SSN;
Email = Email ?? data?.Email;
var myObj = new {name = Name, phone = PhoneNumber, ssn = SSN, email = Email};
var jsonToReturn = JsonConvert.SerializeObject(myObj);
return new HttpResponseMessage(HttpStatusCode.OK) {
Content = new StringContent(jsonToReturn, Encoding.UTF8, "application/json")
};
我的邮件样本
Name: LXXXXX ZXXXXXXXX
PhoneNumber: 5XXXXXXXXX
SSN: 1XXX
Email: [email protected]
"当一封新邮件到达 "触发器的正文格式引起的问题,我们可以看到正文显示如下。
它不是一个json数据,所以当你把它发送给你的函数时,它会失败。
所以如果你想让你的函数运行成功,我们需要提供一个格式良好的数据给你的函数。如果你能决定邮件的格式,就把它修改成下面的格式。
"Name": "LXXXXX ZXXXXXXXX",
"PhoneNumber": "5XXXXXXXXX",
"SSN": "1XXX",
"Email": "[email protected]"
然后用 Html转文本 动作来从邮件触发器中删除正文中的html标签。
之后,在邮件触发器中添加 {
和 }
在数据的开头和结尾。并解析json数据。
现在你可以使用解析json中的body作为函数的输入。