将 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 请求

使用 PHP 验证 Mandrill Webhook

Mandrill Webhook - 安全性

如何在 .net 中处理 Mandrill WebHooks

Mandrill webhooks,SSL证书验证失败,验证CA证书没问题

反序列化 MandrillApp Webhook 响应