public static CreateMailMessageFromEntity ( |
||
entity | /// 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;
}
/// <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); }