This class adds a few internet mail headers not already exposed by the System.Net.MailMessage. It also provides support to encapsulate the nested mail attachments in the Children collection.
Inheritance: System.Net.Mail.MailMessage
Ejemplo n.º 1
0
        /// <summary>
        /// Retrieves the extended mail message.
        /// </summary>
        /// <param name="item">The item.</param>
        /// <returns></returns>
        public SidePOPMailMessage RetrieveExtendedMailMessage(Pop3ListItemResult item)
        {
            SidePOPMailMessage message = RetrieveMimeEntity(item).ToMailMessageEx();

            message.MessageNumber = item.MessageId;
            return(message);
        }
Ejemplo n.º 2
0
        public SidePOPMailMessage Top(int messageId, int lineCount)
        {
            if (messageId < 1)
            {
                throw new ArgumentOutOfRangeException("messageId");
            }

            if (lineCount < 0)
            {
                throw new ArgumentOutOfRangeException("lineCount");
            }

            RetrieveResponse response;

            using (TopCommand command = new TopCommand(_clientStream, messageId, lineCount))
            {
                response = ExecuteCommand <RetrieveResponse, TopCommand>(command);
            }

            MimeReader reader = new MimeReader(response.RawBytes);
            MimeEntity entity = reader.CreateMimeEntity();

            entity.RawBytes = response.RawBytes;
            SidePOPMailMessage message = entity.ToMailMessageEx();

            message.Octets        = response.Octets;
            message.MessageNumber = messageId;
            return(entity.ToMailMessageEx());
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Creates the mail message from entity.
        /// </summary>
        /// <param name="entity">The entity.</param>
        /// <returns></returns>
        public static SidePOPMailMessage CreateMailMessageFromEntity(MimeEntity entity)
        {
            SidePOPMailMessage message = new SidePOPMailMessage();

            string value;

            foreach (string key in entity.Headers.AllKeys)
            {
                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.ReplyToList.Add(CreateMailAddress(value));
                    break;

                case MailHeaders.Subject:
                    message.Subject = value;
                    break;

                case MailHeaders.To:
                    PopulateAddressList(value, message.To);
                    break;
                }
            }

            return(message);
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Sets the message body.
 /// </summary>
 /// <param name="message">The message.</param>
 /// <param name="child">The child.</param>
 private void SetMessageBody(SidePOPMailMessage message, MimeEntity child)
 {
     Encoding encoding = child.GetEncoding();
     message.Body = DecodeBytes(child.Content.ToArray(), encoding);
     message.BodyEncoding = encoding;
     message.IsBodyHtml = string.Equals(MediaTypes.TextHtml,
                                        child.ContentType.MediaType, StringComparison.InvariantCultureIgnoreCase);
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Builds the single part message.
 /// </summary>
 /// <param name="entity">The entity.</param>
 /// <param name="message">The message.</param>
 private void BuildSinglePartMessage(MimeEntity entity, SidePOPMailMessage message)
 {
     SetMessageBody(message, entity);
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Builds the multi part message.
 /// </summary>
 /// <param name="entity">The entity.</param>
 /// <param name="message">The message.</param>
 private void BuildMultiPartMessage(MimeEntity entity, SidePOPMailMessage message)
 {
     foreach (MimeEntity child in entity.Children)
     {
         if (string.Equals(child.ContentType.MediaType, MediaTypes.MultipartAlternative,
                           StringComparison.InvariantCultureIgnoreCase)
             ||
             string.Equals(child.ContentType.MediaType, MediaTypes.MultipartMixed,
                           StringComparison.InvariantCultureIgnoreCase))
         {
             BuildMultiPartMessage(child, message);
         } //if the message is mulitpart/alternative or multipart/mixed then the entity will have children needing parsed.
         else if (!IsAttachment(child) &&
                  (string.Equals(child.ContentType.MediaType, MediaTypes.TextPlain)
                   || string.Equals(child.ContentType.MediaType, MediaTypes.TextHtml)))
         {
             message.AlternateViews.Add(CreateAlternateView(child));
             SetMessageBody(message, child);
         } //add the alternative views.
         else if (string.Equals(child.ContentType.MediaType, MediaTypes.MessageRfc822,
                                StringComparison.InvariantCultureIgnoreCase)
                  &&
                  string.Equals(child.ContentDisposition.DispositionType, DispositionTypeNames.Attachment,
                                StringComparison.InvariantCultureIgnoreCase))
         {
             message.Children.Add(ToMailMessageEx(child));
         } //create a child message and
         else if (IsAttachment(child))
         {
             message.Attachments.Add(CreateAttachment(child));
         }
     }
 }
Ejemplo n.º 7
0
        /// <summary>
        /// Creates the mail message from entity.
        /// </summary>
        /// <param name="entity">The entity.</param>
        /// <returns></returns>
        public static SidePOPMailMessage CreateMailMessageFromEntity(MimeEntity entity)
        {
            SidePOPMailMessage message = new SidePOPMailMessage();

            string value;
            foreach (string key in entity.Headers.AllKeys)
            {
                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.ReplyToList.Add(CreateMailAddress(value));
                        break;
                    case MailHeaders.Subject:
                        message.Subject = value;
                        break;
                    case MailHeaders.To:
                        PopulateAddressList(value, message.To);
                        break;
                }
            }

            return message;
        }