/// <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); }
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()); }
/// <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); }
/// <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); }
/// <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); }
/// <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)); } } }
/// <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; }