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