/// <summary> /// Loads a list of recipients. /// </summary> /// <param name="element"></param> /// <param name="name"></param> private void LoadRecipients(XmlElement element, string name, MailMessageRecipientCollection recipients) { if (element == null) { throw new ArgumentNullException("element"); } if (name == null) { throw new ArgumentNullException("name"); } if (name.Length == 0) { throw new ArgumentOutOfRangeException("'name' is zero-length."); } if (recipients == null) { throw new ArgumentNullException("recipients"); } // clear... recipients.Clear(); // get... foreach (XmlElement recipientElement in element.SelectNodes(name + "/Recipient")) { recipients.Add(MailMessageRecipient.FromXmlElement(recipientElement)); } }
/// <summary> /// Loads data from an XML element. /// </summary> /// <param name="element"></param> // mbr - 16-11-2007 - added. private void LoadFromXmlElement(XmlElement element) { if (element == null) { throw new ArgumentNullException("element"); } // from... XmlElement fromElement = (XmlElement)element.SelectSingleNode("From"); if (fromElement == null) { throw new InvalidOperationException("fromElement is null."); } this.From = MailMessageRecipient.FromXmlElement(fromElement); // recipients... this.LoadRecipients(element, "To", this.To); this.LoadRecipients(element, "Cc", this.Cc); this.LoadRecipients(element, "Bcc", this.Bcc); var replyToElement = (XmlElement)element.SelectSingleNode("ReplyTo"); if (replyToElement != null) { this.ReplyTo = MailMessageRecipient.FromXmlElement(replyToElement); } // basics... this.Subject = XmlHelper.GetElementString(element, "Subject", OnNotFound.ReturnNull); this.Headers = XmlHelper.GetElementString(element, "Headers", OnNotFound.ReturnNull); this.MailFormat = (MailFormat)XmlHelper.GetElementEnumerationValue(element, "MailFormat", typeof(MailFormat), OnNotFound.ReturnNull); this.Date = XmlHelper.GetElementDateTime(element, "Date", OnNotFound.ReturnNull); this.Body = XmlHelper.GetElementString(element, "Body", OnNotFound.ReturnNull); // attachments... foreach (XmlElement attachmentElement in element.SelectNodes("Attachments/Attachment")) { MailAttachment attachment = MailAttachment.FromXmlElement(attachmentElement); this.Attachments.Add(attachment); } // embeds... foreach (XmlElement embedElement in element.SelectNodes("EmbeddedImages/EmbeddedImage")) { var name = embedElement.GetElementString("Name"); var asString = embedElement.GetElementString("Data"); var contentType = embedElement.GetElementString("ContentType"); var contentId = embedElement.GetElementString("ContentId"); var ext = Path.GetExtension(name); var temp = Runtime.Current.GetTempFilePath(ext); var bs = Convert.FromBase64String(asString); File.WriteAllBytes(temp, bs); this.EmbeddedImages.Add(new MailEmbeddedImage(name, temp, contentType, contentId, true)); } }