Почтовый штемпель входящих писем и сериализация ASP.Net

Я использую Postmark для обработки исходящих писем, но недавно я попытался использовать его для входящих сообщений. Postmark отправляет запрос POST в виде строки JSON в определенную конечную точку.

У меня есть настройка конечной точки и объектная модель, которая представляет объект JSON. В локальном тестировании я могу опубликовать сообщение Postmark JSON на моей конечной точке, используя jquery, и оно будет гидрировать мою объектную модель, только если я использую JSON.stringify в сообщении JSON. Если я не использую stringify, любые дочерние объекты (коллекции) имеют нулевые свойства.

Как я могу получить веб-запрос в ASP.Net MVC 4 для гидратации моей объектной модели без использования JSON.stringify? Код ниже:

Объектная модель (работает нормально, если я JSON.stringify JSON ниже):

public class Email
{
    public string Cc { get; set; }
    public string From { get; set; }
    public string HtmlBody { get; set; }
    public string MailBoxHash { get; set; }
    public string MessageID { get; set; }
    public string ReplyTo { get; set; }
    public string Subject { get; set; }
    public string Tag { get; set; }
    public string TextBody { get; set; }
    public string To { get; set; }
    public List<Attachment> Attachments { get; set; }
    public List<Header> Headers { get; set; }
}

public class Attachment
{
    public string Content { get; set; } //null without stringifying JSON
    public string ContentType { get; set; }//null without stringifying JSON
    public string Name { get; set; }//null without stringifying JSON
}

public class Header
{
    public string Name { get; set; }//null without stringifying JSON
    public string Value { get; set; }//null without stringifying JSON
}

Метод контроллера:

[HttpPost, ValidateInput(false)]
    [WebMethod]
    public void Post(Email email)
    {
        InboundEmailService service = new InboundEmailService();
        service.ProcessEmail(email);
    }

JSON от почтового штемпеля:

    {
  "From": "myUser@theirDomain.com",
  "FromFull": {
    "Email": "myUser@theirDomain.com",
    "Name": "John Doe"
  },
  "To": "451d9b70cf9364d23ff6f9d51d870251569e+ahoy@inbound.postmarkapp.com",
  "ToFull": [
    {
      "Email": "451d9b70cf9364d23ff6f9d51d870251569e+ahoy@inbound.postmarkapp.com",
      "Name": ""
    }
  ],
  "Cc": "\"Full name\" <sample.cc@emailDomain.com>, \"Another Cc\" <another.cc@emailDomain.com>",
  "CcFull": [
    {
      "Email": "sample.cc@emailDomain.com",
      "Name": "Full name"
    },
    {
      "Email": "another.cc@emailDomain.com",
      "Name": "Another Cc"
    }
  ],
  "ReplyTo": "myUsersReplyAddress@theirDomain.com",
  "Subject": "This is an inbound message",
  "MessageID": "22c74902-a0c1-4511-804f2-341342852c90",
  "Date": "Thu, 5 Apr 2012 16:59:01 +0200",
  "MailboxHash": "ahoy",
  "TextBody": "[ASCII]",
  "HtmlBody": "[HTML(encoded)]",
  "Tag": "",
  "Headers": [
    {
      "Name": "X-Spam-Checker-Version",
      "Value": "SpamAssassin 3.3.1 (2010-03-16) onrs-ord-pm-inbound1.wildbit.com"
    },
    {
      "Name": "X-Spam-Status",
      "Value": "No"
    },
    {
      "Name": "X-Spam-Score",
      "Value": "-0.1"
    },
    {
      "Name": "X-Spam-Tests",
      "Value": "DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,SPF_PASS"
    },
    {
      "Name": "Received-SPF",
      "Value": "Pass (sender SPF authorized) identity=mailfrom; client-ip=209.85.160.180; helo=mail-gy0-f180.google.com; envelope-from=myUser@theirDomain.com; receiver=451d9b70cf9364d23ff6f9d51d870251569e+ahoy@inbound.postmarkapp.com"
    },
    {
      "Name": "DKIM-Signature",
      "Value": "v=1; a=rsa-sha256; c=relaxed\/relaxed;        d=wildbit.com; s=google;        h=mime-version:reply-to:date:message-id:subject:from:to:cc         :content-type;        bh=cYr\/+oQiklaYbBJOQU3CdAnyhCTuvemrU36WT7cPNt0=;        b=QsegXXbTbC4CMirl7A3VjDHyXbEsbCUTPL5vEHa7hNkkUTxXOK+dQA0JwgBHq5C+1u         iuAJMz+SNBoTqEDqte2ckDvG2SeFR+Edip10p80TFGLp5RucaYvkwJTyuwsA7xd78NKT         Q9ou6L1hgy\/MbKChnp2kxHOtYNOrrszY3JfQM="
    },
    {
      "Name": "MIME-Version",
      "Value": "1.0"
    },
    {
      "Name": "Message-ID",
      "Value": "<CAGXpo2WKfxHWZ5UFYCR3H_J9SNMG+5AXUovfEFL6DjWBJSyZaA@mail.gmail.com>"
    }
  ],
  "Attachments": [
    {
      "Name": "myimage.png",
      "Content": "[BASE64-ENCODED CONTENT]",
      "ContentType": "image/png",
      "ContentLength": 4096
    },
    {
      "Name": "mypaper.doc",
      "Content": "[BASE64-ENCODED CONTENT]",
      "ContentType": "application/msword",
      "ContentLength": 16384
    }
  ]
}

0 ответов

Другие вопросы по тегам