SendGrid 传入邮件 webhook - 如何在 C# 中将 JSON 格式的电子邮件数据保存到我的应用程序文件夹中

SendGrid incoming mail webhook - how to save the JSON format email data into my application folder in C#

这是关于 Sendgrid 传入邮件网络钩子的,我已经参考了这个 URL SendGrid incoming mail webhook - how do I secure my endpoint,并且知道如何处理这个,但是,由于我是 MVC / WebAPI 的新手,可以谁给我控制器方法代码片段来捕获 JSON 格式的 HTTP post 并保存到我的应用程序文件夹。

这是我通过谷歌搜索并稍作修改后找到的解决方案:

[HttpPost, HttpGet]
[EnableCors(origins: "*", headers: "*", methods: "*")]
public async Task Post()
{
    if (Request.Content.IsMimeMultipartContent("form-data"))
        try
        {
            //To get complete post in a string use the below line, not used here
            string strCompletePost = await Request.Content.ReadAsStringAsync();

            HttpContext context = HttpContext.Current;
            string strFrom = context.Request.Form.GetValues("from")[0];
            string strEmailText = context.Request.Form.GetValues("email")[0];
            string strSubject = context.Request.Form.GetValues("subject")[0];

            //Not useful I guess, because it always return sendgrid IP
            string strSenderIP = context.Request.Form.GetValues("sender_ip")[0];
        }
        catch (Exception ex)
        {

        }
}

我试过了,将值检索为

String to = context.Request.Params["to"];

但是,返回的值不一致,即大多数时候返回 null,偶尔 returns 存储在其中的实际值。

如果谁有更好的解决办法,请告诉我。

谢谢

如果由于某种原因 ["to"] 对您不起作用,请尝试获取 ["envelope"] 值,

context.Request.Form.GetValues("envelope")[0]

看起来像

{"to":["emailto@example.com"],"from":"emailfrom@example.com"}