using System.Xml.Serialization;
using System.Collections.Generic;
public static void Main()
XmlSerializer serializer = new XmlSerializer(typeof(Settings));
using (var reader = new StringReader(GetSettingsXML()))
settings = (Settings)serializer.Deserialize(reader);
Console.WriteLine(settings.Locations.PathQueue);
XmlSerializer serializer2 = new XmlSerializer(typeof(MailTask));
using (var reader = new StringReader(GetMailTaskXML()))
task = (MailTask)serializer2.Deserialize(reader);
Console.WriteLine(task.Settings.Priority);
[XmlRoot(ElementName = "settings")]
[XmlElement(ElementName = "locations")]
public Locations Locations { get; set; }
[XmlRoot(ElementName = "locations")]
[XmlElement(ElementName = "queue")]
public string PathQueue { get; set; }
[XmlElement(ElementName = "process")]
public string PathProcess { get; set; }
[XmlElement(ElementName = "error")]
public string PathError { get; set; }
[XmlElement(ElementName = "done")]
public string PathDone { get; set; }
[XmlRoot(ElementName = "mailtask")]
public long Id { get; set; }
[XmlElement(ElementName = "id")]
get { return this.Id.ToString(); }
set { this.Id = MailTaskUtils.TryParseOrDefault(value, Int64.Parse(DateTime.Now.ToString("yyyyMMddhhmmss"))); }
public FileInfo File { get; set; }
[XmlElement(ElementName = "properties")]
public Properties Properties { get; set; }
[XmlElement(ElementName = "settings")]
public MailTaskSettings Settings { get; set; }
[XmlElement(ElementName = "mail")]
public Mail Mail { get; set; }
[XmlRoot(ElementName = "properties")]
[XmlElement(ElementName = "username")]
public string UserName { get; set; }
[XmlElement(ElementName = "klantid")]
public string KlantId { get; set; }
[XmlRoot(ElementName = "settings")]
public class MailTaskSettings
public DateTime Publish { get; set; }
[XmlElement(ElementName = "publish")]
get { return this.Publish.ToString(); }
set { this.Publish = MailTaskUtils.TryParseOrDefault(value, DateTime.Now); }
public int Priority { get; set; }
[XmlElement(ElementName = "priority")]
get { return this.Priority.ToString(); }
set { this.Priority = MailTaskUtils.TryParseOrDefault(value, 0); }
[XmlElement(ElementName = "senderid")]
public string SenderId { get; set; }
[XmlElement(ElementName = "objectid")]
public string ObjectId { get; set; }
[XmlElement(ElementName = "relatieid")]
public string RelatieId { get; set; }
public bool Notification { get; set; }
[XmlElement(ElementName = "notification")]
public string _Notification
get { return this.Notification.ToString(); }
set { this.Notification = MailTaskUtils.TryParseOrDefault(value, false); }
[XmlRoot(ElementName = "mailaddress")]
public string DisplayName { get; set; }
[XmlElement(ElementName = "displayname")]
public XmlCDataSection _DisplayName
get { return new XmlDocument().CreateCDataSection(this.DisplayName); }
set { this.DisplayName = value.Value; }
[XmlElement(ElementName = "address")]
public string Address { get; set; }
[XmlRoot(ElementName = "from")]
[XmlElement(ElementName = "mailaddress")]
public MailAddress MailAddress { get; set; }
[XmlRoot(ElementName = "to")]
[XmlElement(ElementName = "mailaddress")]
public List<MailAddress> Addresses { get; set; }
[XmlRoot(ElementName = "cc")]
[XmlElement(ElementName = "mailaddress")]
public List<MailAddress> Addresses { get; set; }
[XmlRoot(ElementName = "bcc")]
[XmlElement(ElementName = "mailaddress")]
public List<MailAddress> Addresses { get; set; }
[XmlRoot(ElementName = "attachment")]
public class MailAttachment
public string Url { get; set; }
[XmlElement(ElementName = "url")]
public XmlCDataSection _Url
get { return new XmlDocument().CreateCDataSection(this.Url); }
set { this.Url = value.Value; }
public string File { get; set; }
[XmlElement(ElementName = "file")]
public XmlCDataSection _File
get { return new XmlDocument().CreateCDataSection(this.File); }
set { this.File = value.Value; }
[XmlRoot(ElementName = "attachments")]
public class MailAttachmentCollection
[XmlElement(ElementName = "attachment")]
public List<MailAttachment> Attachment { get; set; }
[XmlRoot(ElementName = "mail")]
[XmlElement(ElementName = "from")]
public From From { get; set; }
[XmlElement(ElementName = "to")]
public To To { get; set; }
[XmlElement(ElementName = "cc")]
public ToCC Cc { get; set; }
[XmlElement(ElementName = "bcc")]
public ToBCC Bcc { get; set; }
public string Subject { get; set; }
[XmlElement(ElementName = "subject")]
public XmlCDataSection _Subject
get { return new XmlDocument().CreateCDataSection(this.Subject); }
set { this.Subject = value.Value; }
public string Content { get; set; }
[XmlElement(ElementName = "content")]
public XmlCDataSection _Content
get { return new XmlDocument().CreateCDataSection(this.Content); }
set { this.Content = value.Value; }
[XmlElement(ElementName = "attachments")]
public MailAttachmentCollection Attachments { get; set; }
public class MailTaskUtils
public static bool TryParseOrDefault(string input, bool def)
if (Boolean.TryParse(input, out _bool))
public static int TryParseOrDefault(string input, int def)
if (Int32.TryParse(input, out _int))
public static long TryParseOrDefault(string input, long def)
if (Int64.TryParse(input, out _long))
public static DateTime TryParseOrDefault(string input, DateTime def)
if (DateTime.TryParse(input, out _int))
public static String GetSettingsXML()
@"<?xml version=""1.0"" encoding=""utf-8""?>
<queue>c:\runtime\crm\queues\mailtasks\queue</queue>
<process>c:\runtime\crm\queues\mailtasks\process</process>
<error>c:\runtime\crm\queues\mailtasks\error</error>
<done>c:\runtime\crm\queues\mailtasks\done</done>
public static String GetMailTaskXML()
@"<?xml version=""1.0"" encoding=""utf-8""?>
<username>INTLOCALLOGIN</username>
<klantid>GoesenRoos</klantid>
<publish>2015-11-11T13:15:48.806+01:00</publish>
<senderid>2140</senderid>
<objectid>20150206094651206</objectid>
<relatieid>7416</relatieid>
<notification>false</notification>
<displayname><![CDATA[Patrick Sonneveld]]></displayname>
<address>p.sonneveld@goesenroos.nl</address>
<displayname><![CDATA[Dhr. Liliaan]]></displayname>
<address>liliaan@estateseurope.nl</address>
<displayname><![CDATA[Dhr. Liliaan]]></displayname>
<address>liliaan@estateseurope.nl</address>
<displayname><![CDATA[Dhr. Liliaan]]></displayname>
<address>liliaan@estateseurope.nl</address>
<subject><![CDATA[Nieuw aanbod]]></subject>
<content><![CDATA[c:\runtime\crm\sendmail\klantenac\goesenroos\content\1_x_111_aaa.html]]></content>
<url><![CDATA[http://bb.goesenroos.nl/testomgeving/test.jpg]]></url>
<file><![CDATA[c:\runtime\crm\sendmail\klantenac\goesenroos\attachments\1_x_111_aaa\test.jpg]]></file>