Microsoft.Legal.MatterCenter.Utility.MailMessageParser.GetMailFileProperties C# (CSharp) Method

GetMailFileProperties() public static method

Gets the uploaded email file properties....
public static GetMailFileProperties ( System fileStream, string>.Dictionary mailProperties ) : string>.Dictionary
fileStream System The file stream.
mailProperties string>.Dictionary The mail properties.
return string>.Dictionary
        public static Dictionary<string, string> GetMailFileProperties(System.IO.Stream fileStream, Dictionary<string, string> mailProperties)
        {
            if (null != mailProperties && mailProperties.ContainsKey(ServiceConstants.MAIL_FILE_EXTENSION_KEY))
            {
                if (string.Equals(mailProperties[ServiceConstants.MAIL_FILE_EXTENSION_KEY], ServiceConstants.EMAIL_FILE_EXTENSION, StringComparison.OrdinalIgnoreCase))
                {
                    MailMimeReader mime = new MailMimeReader();
                    MailMessageParser messageParser = mime.GetEmail(fileStream);
                    string fromDisplayName = Convert.ToString(messageParser.From.DisplayName, CultureInfo.InvariantCulture);
                    mailProperties[ServiceConstants.MAIL_SENDER_KEY] = String.Concat(Convert.ToString(messageParser.From.Address, CultureInfo.InvariantCulture), ServiceConstants.SEMICOLON, fromDisplayName.Replace(Convert.ToString(messageParser.From.Address, CultureInfo.InvariantCulture), string.Empty).Replace(ServiceConstants.OPENING_BRACKET + ServiceConstants.CLOSING_BRACKET, string.Empty));
                    mailProperties[ServiceConstants.MAIL_SEARCH_EMAIL_SUBJECT] = messageParser.Subject;
                    mailProperties[ServiceConstants.MAIL_SENT_DATE_KEY] = Convert.ToString(messageParser.DeliveryDate, CultureInfo.InvariantCulture);
                    mailProperties[ServiceConstants.MAIL_RECEIVED_DATEKEY] = Convert.ToString(messageParser.ReceivedDate, CultureInfo.InvariantCulture);
                    mailProperties[ServiceConstants.MAIL_ORIGINAL_NAME] = messageParser.Subject;
                    StringBuilder mailReceiver = new StringBuilder();
                    StringBuilder mailCCAddress = new StringBuilder();
                    StringBuilder attachmentName = new StringBuilder();

                    foreach (MailAddress toItem in messageParser.To)
                    {
                        string toMailAlias = Convert.ToString(toItem.Address, CultureInfo.InvariantCulture);
                        string toMailName = Convert.ToString(toItem.DisplayName, CultureInfo.InvariantCulture);
                        if (toMailName.Contains(toMailAlias))
                        {
                            toMailName = toMailName.Replace(toMailAlias, string.Empty).Replace(ServiceConstants.OPENING_BRACKET + ServiceConstants.CLOSING_BRACKET, string.Empty);
                        }

                        mailReceiver.Append(toMailAlias + ServiceConstants.SEMICOLON + toMailName + ServiceConstants.SEMICOLON);
                    }

                    mailProperties[ServiceConstants.MAIL_RECEIVER_KEY] = Convert.ToString(mailReceiver, CultureInfo.InvariantCulture);

                    foreach (MailAddress itemCC in messageParser.CC)
                    {
                        string mailCCAlias = Convert.ToString(itemCC.Address, CultureInfo.InvariantCulture);
                        string mailCCName = Convert.ToString(itemCC.DisplayName, CultureInfo.InvariantCulture);
                        if (mailCCName.Contains(mailCCAlias))
                        {
                            mailCCName = mailCCName.Replace(mailCCAlias, string.Empty).Replace(ServiceConstants.OPENING_BRACKET + ServiceConstants.CLOSING_BRACKET, string.Empty);
                        }

                        mailCCAddress.Append(mailCCAlias + ServiceConstants.SEMICOLON + mailCCName + ServiceConstants.SEMICOLON);
                    }

                    mailProperties[ServiceConstants.MAIL_CC_ADDRESS_KEY] = Convert.ToString(mailCCAddress, CultureInfo.InvariantCulture);

                    foreach (System.Net.Mail.Attachment itemAttachment in messageParser.Attachments)
                    {
                        if (!string.IsNullOrWhiteSpace(itemAttachment.Name))
                        {
                            attachmentName.Append(itemAttachment.Name + ServiceConstants.SEMICOLON);
                        }
                    }

                    for (int mailEntitiesCount = 0; mailEntitiesCount < messageParser.Entities.Count; mailEntitiesCount++)
                    {
                        if (string.Equals(messageParser.Entities[mailEntitiesCount].MediaMainType, ServiceConstants.MAIL_ATTACHMENT_MEDIA_MAINT_YPE, StringComparison.CurrentCultureIgnoreCase))
                        {
                            attachmentName.Append(messageParser.Entities[mailEntitiesCount].ContentDescription + ServiceConstants.SEMICOLON);
                        }
                    }

                    mailProperties[ServiceConstants.MAIL_ATTACHMENT_KEY] = Convert.ToString(attachmentName, CultureInfo.InvariantCulture);

                    // Setting email importance
                    mailProperties[ServiceConstants.MAIL_IMPORTANCE_KEY] = (!string.IsNullOrWhiteSpace(messageParser.MailImportance) ? messageParser.MailImportance : ServiceConstants.MAIL_DEFAULT_IMPORTANCE);

                    // Setting email categories
                    mailProperties[ServiceConstants.MAIL_CATEGORIES_KEY] = (!string.IsNullOrWhiteSpace(messageParser.MailCategories) ? messageParser.MailCategories.Replace(ServiceConstants.COMMA, ServiceConstants.SEMICOLON) : string.Empty);
                }
            }

            return mailProperties;
        }