在我的逻辑应用程序的 azure 函数中,将电子邮件正文转换为 JSON 对象。

问题描述 投票:0回答:1

我有一个逻辑应用程序,其触发器是接收电子邮件。它将我的电子邮件正文传递给 azure 函数。然后我的函数获取电子邮件的内容,并将其转化为 json 对象,供我的逻辑应用程序的其余部分使用。enter image description here

enter image description here

目前,如果我在 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]
c# azure azure-functions azure-logic-apps
1个回答
0
投票

"当一封新邮件到达 "触发器的正文格式引起的问题,我们可以看到正文显示如下。

enter image description here

它不是一个json数据,所以当你把它发送给你的函数时,它会失败。

所以如果你想让你的函数运行成功,我们需要提供一个格式良好的数据给你的函数。如果你能决定邮件的格式,就把它修改成下面的格式。

"Name": "LXXXXX ZXXXXXXXX",
"PhoneNumber": "5XXXXXXXXX",
"SSN": "1XXX",
"Email": "[email protected]"

然后用 Html转文本 动作来从邮件触发器中删除正文中的html标签。enter image description here

之后,在邮件触发器中添加 {} 在数据的开头和结尾。并解析json数据。

enter image description here

现在你可以使用解析json中的body作为函数的输入。

© www.soinside.com 2019 - 2024. All rights reserved.