Papercut.Smtp.Mime.MailMessageEx.CreateMailMessageFromEntity C# (CSharp) Method

CreateMailMessageFromEntity() public static method

Creates the mail message from entity.
public static CreateMailMessageFromEntity ( MimeEntity entity ) : MailMessageEx
entity MimeEntity /// The entity. ///
return MailMessageEx
        public static MailMessageEx CreateMailMessageFromEntity(MimeEntity entity)
        {
            var message = new MailMessageEx();

            foreach (string key in entity.Headers.AllKeys)
            {
                string value = entity.Headers[key];
                if (value.Equals(string.Empty))
                {
                    value = " ";
                }

                message.Headers.Add(key.ToLowerInvariant(), value);

                switch (key.ToLowerInvariant())
                {
                    case MailHeaders.Bcc:
                        PopulateAddressList(value, message.Bcc);
                        break;
                    case MailHeaders.Cc:
                        PopulateAddressList(value, message.CC);
                        break;
                    case MailHeaders.From:
                        message.From = CreateMailAddress(value);
                        break;
                    case MailHeaders.ReplyTo:
                        message.ReplyTo = CreateMailAddress(value);
                        break;
                    case MailHeaders.Subject:
                        message.Subject = value;
                        break;
                    case MailHeaders.To:
                        PopulateAddressList(value, message.To);
                        break;
                }
            }

            return message;
        }

Usage Example

Esempio n. 1
0
        /// <summary>
        /// Toes the mail message ex.
        /// </summary>
        /// <param name="entity">
        /// The entity.
        /// </param>
        /// <returns>
        /// </returns>
        private MailMessageEx ToMailMessageEx(MimeEntity entity)
        {
            if (entity == null)
            {
                throw new ArgumentNullException("entity");
            }

            // parse standard headers and create base email.
            MailMessageEx message = MailMessageEx.CreateMailMessageFromEntity(entity);

            if (!string.IsNullOrEmpty(entity.ContentType.Boundary))
            {
                message = MailMessageEx.CreateMailMessageFromEntity(entity);
                this.BuildMultiPartMessage(entity, message);
            }

            // parse multipart message into sub parts.
            else if (string.Equals(
                         entity.ContentType.MediaType, MediaTypes.MessageRfc822, StringComparison.InvariantCultureIgnoreCase))
            {
                // use the first child to create the multipart message.
                if (entity.Children.Count < 0)
                {
                    throw new Exception("Invalid child count on message/rfc822 entity.");
                }

                // create the mail message from the first child because it will
                // contain all of the mail headers.  The entity in this state
                // only contains simple content type headers indicating, disposition, type and description.
                // This means we can't create the mail message from this type as there is no
                // internet mail headers attached to this entity.
                message = MailMessageEx.CreateMailMessageFromEntity(entity.Children[0]);
                this.BuildMultiPartMessage(entity, message);
            }

            // parse nested message.
            else
            {
                message = MailMessageEx.CreateMailMessageFromEntity(entity);
                this.BuildSinglePartMessage(entity, message);
            }

            // Create single part message.
            return(message);
        }