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)
&&
child.ContentDisposition != null // RFC 2183 specifies the 'Content-Disposition' header field, which is optional and valid for any MIME entity ("message" or "body part")
&&
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));
}
}
}