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

时间:2015-07-17 10:57:02

标签: email c#-4.0 sendgrid

这是关于Sendgrid传入邮件的webhook,我已经引用了这个URL SendGrid incoming mail webhook - how do I secure my endpoint,并且知道了如何解决这个问题,但是,由于我是MVC / WebAPI的新手,任何人都可以给我控制器方法用于捕获JSON格式HTTP post并保存到我的应用程序文件夹的代码片段。

2 个答案:

答案 0 :(得分:0)

这是我在谷歌搜索后稍微修改后找到的解决方案:

[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并偶尔返回存储在其中的实际值。

如果有人有更好的解决方案,请告诉我。

谢谢

答案 1 :(得分:0)

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

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

看起来像

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