将 Mandrill JSON webhook 入站电子邮件附件映射到 C# 类
Posted
技术标签:
【中文标题】将 Mandrill JSON webhook 入站电子邮件附件映射到 C# 类【英文标题】:Mapping Mandrill JSON webhooks inbound email attachments to C# classes 【发布时间】:2015-12-24 03:45:05 【问题描述】:我可以处理来自 Mandrill 的 JSON webhook 入站电子邮件,但不能处理 JSON 消息的附件部分。
这是我创建的 C# 类:
public class MandrillInbound
public string @event get; set;
public int ts get; set;
public InboundMsg msg get; set;
public class InboundMsg
public string raw_msg get; set;
//public Headers headers get; set;
public string text get; set;
public bool text_flowed get; set;
public string html get; set;
public List<Attachment> attachments get; set;
public string from_email get; set;
public string from_name get; set;
public List<List<string>> to get; set;
public string subject get; set;
//public Spf spf get; set;
//public SpamReport spam_report get; set;
//public Dkim dkim get; set;
public string email get; set;
public List<object> tags get; set;
public object sender get; set;
public object template get; set;
public class Attachment
public string name get; set;
public string type get; set;
public string content get; set;
public bool base64 get; set;
问题似乎与来自 Mandrill 的附件的 JSON 格式有关,如下所示:
"attachments":
"Attachment1.txt":"name":"Attachment1.txt","type":"text\/plain","content":"Test attachment 1","base64":false,
"Attachment2.txt":"name":"Attachment2.txt","type":"text\/plain","content":"Test attachment 2","base64":false
我已经联系了 Mandrill,他们非常乐于助人,但作为 php 机构,他们还不能提供解决方案。 Mandrill 入站电子邮件 API 的规范在这里: https://mandrill.zendesk.com/hc/en-us/articles/205583207-What-is-the-format-of-inbound-email-webhooks-
人们认为映射到 JSON 附件的类结构应该是什么?我使用 JSON.Net 来解析 JSON。
非常感谢
提姆
【问题讨论】:
嗯,这有助于向我解释一些事情,基本上是为什么我得到的是字典而不是列表。我假设图像的格式是相同的,你能确认一下吗? 【参考方案1】:您应该如下定义您的InboundMsg
类:
public class InboundMsg
// Other properties as before
Dictionary<string, Attachment> attachments get; set;
Json.NET can deserialize a JSON object to a .Net generic dictionary, making the property names the dictionary keys and the property values the dictionary values,这就是你想在这里做的。
【讨论】:
dbc - 谢谢,效果很好。非常感谢。以上是关于将 Mandrill JSON webhook 入站电子邮件附件映射到 C# 类的主要内容,如果未能解决你的问题,请参考以下文章
在 .NET 中验证 Mandrill 入站 Webhook 请求
如何在 .net 中处理 Mandrill WebHooks