microsoft azure 对我来说是一个全新的编程主题。
编程基础语言是C#。
我必须使用逻辑应用程序中的 Azure Funtion Http 触发器(当新电子邮件到达时)。
我将日志应用程序中收到的电子邮件中的所有可能数据提供给
到天蓝色的函数调用。
然后我首先遇到的问题是 HttpRequest req 无法请求任何内容(没有数据)。
我发现 C# .NetCore3.1 在 JSON-Object 方面存在问题并返回空对象。
然后我使用 .NetCore2.1 构建项目,并且它正常工作。
我得到正确的信息,例如req.Host
在这样的调用之后我在数据中看到了一个有效的 JSON 对象
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic data = JsonConvert.DeserializeObject(requestBody);
但我不知道如何解析 JSON 对象中的数据,例如(来自、到、主题、内容、附件......)。
我尝试了很多发现的样本,但我不喜欢任何有效的方法,例如获取空值,异常,..
请有人在这里发布一个适用于使用 VS2017/2019 .NetCore2.1 编译的 azure 函数的小代码片段。
另一个问题是最终有办法直接从 http 请求获取 MimeMessage-obj 吗?
然后我可以直接从该对象获取信息,但可以帮助我解决这两种解决方案之一
哪里都好。
否则,我会自己拆分 JSON 结构,以一种非常尴尬的方式获取信息。
所以我希望有人能帮助我。
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation($" host : {req.Host}");
string name = req.Query["name"];
// read the contents of the posted data into a string
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
// use Json.NET to deserialize the posted JSON into a C# dynamic object
dynamic data = JsonConvert.DeserializeObject(requestBody);
name = name ?? data?.name;
例如,我有这样一个 Json 内容(在 dtaa 中这两行代码之后):
string requestBody = wait new StreamReader(req.Body).ReadToEndAsync();
动态数据 = JsonConvert.DeserializeObject(requestBody);
Json-Content 用于解析简短的电子邮件(其他请求可能会因更多或更少的参数(字段)而有所不同)
{ {
"Conversion Id": "AAQkADRmZDAwMTMwLTI3MTMtNGI0Ny1iMzFiLTQzYWJiZDY0YWI1ZQAQAE2OZM06t0uQqpd9MuONKNQ=",
"From": "[email protected] /cdn-cgi/l/email-protection",
"Has Attachment": false,
"Internet Message Id": "<AM0PR07MB44178000A0B37882D6BC01D99ACC0@AM0PR07MB4417.eurprd07.prod.outlook.com>",
"Is Html": false,
"Is rRad": false,
"Message Id": "AAMkADRmZDAwMTMwLTI3MTMtNGI0Ny1iMzFiLTQzYWJiZDY0YWI1ZQBGAAAAAAAvlJZPJxnGS4f6YWxh7zGsBwBnLziSnuG8R6h5C2SVmlYlAAHViSWpAACAWl3JfUo4SI7D5g-MgfEiAAJiPJQeAAA=",
"Received Time": "2020-12-09T14:05:06+00:00",
"Subject": "test1",
"To": "[email protected] /cdn-cgi/l/email-protection",
"emailBody": "1234\r\n",
"importance": "normal"
}
}