Exemple #1
0
        /// <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));
            }
        }
Exemple #2
0
        /// <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));
            }
        }