/// <summary>
        /// Uploads the .msg file to specified folder in matter library.
        /// </summary>
        /// <param name="requestObject">web request object</param>
        /// <param name="client">service client object</param>
        /// <param name="folderPath">target folder path</param>
        /// <param name="fileName">Name of the file.</param>
        /// <param name="documentLibraryName">Name of the document library</param>
        /// <param name="xmlDocument">XML Document containing read values from Request</param>
        /// <param name="message">Reference object for the message to be returned</param> 
        internal static void UploadAttachedMailExtBlank(RequestObject requestObject, Client client, string folderPath, string fileName, string documentLibraryName, XmlDocument xmlDocument, ref string message)
        {
            var bytes = (dynamic)null;
            MailMetaData mailMetaData = new MailMetaData();

            try
            {
                XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlDocument.NameTable);
                nsmgr.AddNamespace("s", ConstantStrings.SoapEnvelopURI);
                nsmgr.AddNamespace("m", ConstantStrings.ExchangeServiceMessage);
                nsmgr.AddNamespace("t", ConstantStrings.ExchangeServiceTypes);
                MailXPath xPath = new MailXPath();
                xPath.mailReceiver = "/s:Envelope/s:Body/m:GetAttachmentResponse/m:ResponseMessages/m:GetAttachmentResponseMessage/m:Attachments/t:ItemAttachment/t:Message/t:ToRecipients/t:Mailbox";
                xPath.mailCC = "/s:Envelope/s:Body/m:GetAttachmentResponse/m:ResponseMessages/m:GetAttachmentResponseMessage/m:Attachments/t:ItemAttachment/t:Message/t:CcRecipients/t:Mailbox";
                xPath.mailRecieved = "/s:Envelope/s:Body/m:GetAttachmentResponse/m:ResponseMessages/m:GetAttachmentResponseMessage/m:Attachments/t:ItemAttachment/t:Message/t:DateTimeReceived";
                xPath.mailFromName = "/s:Envelope/s:Body/m:GetAttachmentResponse/m:ResponseMessages/m:GetAttachmentResponseMessage/m:Attachments/t:ItemAttachment/t:Message/t:From/t:Mailbox/t:Name";
                xPath.mailFromAddress = "/s:Envelope/s:Body/m:GetAttachmentResponse/m:ResponseMessages/m:GetAttachmentResponseMessage/m:Attachments/t:ItemAttachment/t:Message/t:From/t:Mailbox/t:EmailAddress";
                xPath.mailImportance = "/s:Envelope/s:Body/m:GetAttachmentResponse/m:ResponseMessages/m:GetAttachmentResponseMessage/m:Attachments/t:ItemAttachment/t:Message/t:Importance";
                xPath.mailSubject = "/s:Envelope/s:Body/m:GetAttachmentResponse/m:ResponseMessages/m:GetAttachmentResponseMessage/m:Attachments/t:ItemAttachment/t:Message/t:Subject";
                xPath.mailCategories = "/s:Envelope/s:Body/m:GetAttachmentResponse/m:ResponseMessages/m:GetAttachmentResponseMessage/m:Attachments/t:ItemAttachment/t:Message/t:Categories";
                xPath.mailConversationId = "/s:Envelope/s:Body/m:GetAttachmentResponse/m:ResponseMessages/m:GetAttachmentResponseMessage/m:Attachments/t:ItemAttachment/t:Message/t:ConversationId";
                xPath.mailConversationTopic = "/s:Envelope/s:Body/m:GetAttachmentResponse/m:ResponseMessages/m:GetAttachmentResponseMessage/m:Attachments/t:ItemAttachment/t:Message/t:ConversationTopic";
                xPath.mailSensitivity = "/s:Envelope/s:Body/m:GetAttachmentResponse/m:ResponseMessages/m:GetAttachmentResponseMessage/m:Attachments/t:ItemAttachment/t:Message/t:Sensitivity";
                xPath.mailHasAttachments = "/s:Envelope/s:Body/m:GetAttachmentResponse/m:ResponseMessages/m:GetAttachmentResponseMessage/m:Attachments/t:ItemAttachment/t:Message/t:HasAttachments";
                xPath.mailSentDate = "/s:Envelope/s:Body/m:GetAttachmentResponse/m:ResponseMessages/m:GetAttachmentResponseMessage/m:Attachments/t:ItemAttachment/t:Message/t:DateTimeSent";
                bytes = Convert.FromBase64String(xmlDocument.SelectSingleNode("/s:Envelope/s:Body/m:GetAttachmentResponse/m:ResponseMessages/m:GetAttachmentResponseMessage/m:Attachments/t:ItemAttachment/t:Message/t:MimeContent", nsmgr).InnerXml);
                GetMailProperties(xPath, ref mailMetaData, xmlDocument);
                mailMetaData.mailImportance = (string.IsNullOrWhiteSpace(mailMetaData.mailImportance)) ? ConstantStrings.MailDefaultImportance : mailMetaData.mailImportance;
                using (MemoryStream memoryStream = new MemoryStream(bytes))
                {
                    UploadToFolder(requestObject, client, folderPath, fileName + ConstantStrings.EmailFileExtension, string.Empty, memoryStream, documentLibraryName, mailMetaData, ref message);
                }
            }
            catch (Exception exception)
            {
                Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
            }
        }
        /// <summary>
        /// Get properties of the mail file to be uploaded
        /// </summary>
        /// <param name="mailXPath">Mail Xpath object</param>
        /// <param name="mailMetaData">Mail metadata object</param>
        /// <param name="xmlDocument">XML Document containing read values from Request</param>
        private static void GetMailProperties(MailXPath mailXPath, ref MailMetaData mailMetaData, XmlDocument xmlDocument)
        {

            XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlDocument.NameTable);
            nsmgr.AddNamespace("s", ConstantStrings.SoapEnvelopURI);
            nsmgr.AddNamespace("m", ConstantStrings.ExchangeServiceMessage);
            nsmgr.AddNamespace("t", ConstantStrings.ExchangeServiceTypes);

            XmlNode checkMailFromAddressField = xmlDocument.SelectSingleNode(mailXPath.mailFromAddress, nsmgr);
            XmlNode xmlNode = null;
            XmlNodeList xmlNodeList = null;

            mailMetaData.sentDate = GetPropertyValueFromXml(mailXPath.mailSentDate, xmlDocument, nsmgr);
            mailMetaData.mailImportance = GetPropertyValueFromXml(mailXPath.mailImportance, xmlDocument, nsmgr);
            mailMetaData.mailSubject = GetPropertyValueFromXml(mailXPath.mailSubject, xmlDocument, nsmgr);
            mailMetaData.receivedDate = GetPropertyValueFromXml(mailXPath.mailRecieved, xmlDocument, nsmgr);
            mailMetaData.sensitivity = GetPropertyValueFromXml(mailXPath.mailSensitivity, xmlDocument, nsmgr);
            mailMetaData.conversationTopic = GetPropertyValueFromXml(mailXPath.mailConversationTopic, xmlDocument, nsmgr);
            mailMetaData.hasAttachments = GetPropertyValueFromXml(mailXPath.mailHasAttachments, xmlDocument, nsmgr);
            //Subject is kept as the original name of the mail
            mailMetaData.originalName = GetPropertyValueFromXml(mailXPath.mailSubject, xmlDocument, nsmgr);

            xmlNode = xmlDocument.SelectSingleNode(mailXPath.mailFromName, nsmgr);
            if (null != xmlNode && null != xmlNode)
            {
                mailMetaData.mailSender = xmlNode.InnerXml;
                mailMetaData.mailSender += ConstantStrings.Semicolon + checkMailFromAddressField.InnerXml;
            }

            xmlNodeList = xmlDocument.SelectNodes(mailXPath.mailReceiver, nsmgr);
            mailMetaData.mailReceiver = GetRecipientsField(xmlNodeList);

            xmlNodeList = xmlDocument.SelectNodes(mailXPath.mailCC, nsmgr);
            mailMetaData.cc = GetRecipientsField(xmlNodeList);

            xmlNode = xmlDocument.SelectSingleNode(mailXPath.mailConversationId, nsmgr);
            if (null != xmlNode)
            {
                mailMetaData.conversationId = Convert.ToString(xmlNode.Attributes["Id"].Value, CultureInfo.InvariantCulture);
            }


            xmlNode = xmlDocument.SelectSingleNode(mailXPath.mailCategories, nsmgr);
            if (null != xmlNode)
            {
                foreach (XmlNode node in xmlNode.ChildNodes)
                {
                    mailMetaData.categories += node.InnerText + ConstantStrings.Semicolon;
                }
            }

            XmlNodeList xnlist = xmlDocument.GetElementsByTagName("t:Name");
            foreach (XmlNode node in xnlist)
            {
                if (null != node.PreviousSibling && "t:AttachmentId" == node.PreviousSibling.Name)
                {
                    mailMetaData.attachment += node.InnerText + ConstantStrings.Semicolon;
                }
            }
        }
        /// <summary>
        /// Get properties of the Email being uploaded
        /// </summary>
        /// <param name="xmlDocument">XML Document containing read values from Request</param>
        /// <param name="mailMetaData">Mail metadata object</param>
        /// <returns>Array of bytes</returns>
        private static dynamic GetEmailProperties(XmlDocument xmlDocument, ref MailMetaData mailMetaData)
        {
            var bytes = (dynamic)null;
            XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlDocument.NameTable);
            nsmgr.AddNamespace("s", ConstantStrings.SoapEnvelopURI);
            nsmgr.AddNamespace("m", ConstantStrings.ExchangeServiceMessage);
            nsmgr.AddNamespace("t", ConstantStrings.ExchangeServiceTypes);
            MailXPath mailXPath = new MailXPath();
            mailXPath.mailReceiver = "/s:Envelope/s:Body/m:GetItemResponse/m:ResponseMessages/m:GetItemResponseMessage/m:Items/t:Message/t:ToRecipients/t:Mailbox";
            mailXPath.mailCC = "/s:Envelope/s:Body/m:GetItemResponse/m:ResponseMessages/m:GetItemResponseMessage/m:Items/t:Message/t:CcRecipients/t:Mailbox";
            mailXPath.mailSentDate = "/s:Envelope/s:Body/m:GetItemResponse/m:ResponseMessages/m:GetItemResponseMessage/m:Items/t:Message/t:DateTimeSent";
            mailXPath.mailFromName = "/s:Envelope/s:Body/m:GetItemResponse/m:ResponseMessages/m:GetItemResponseMessage/m:Items/t:Message/t:From/t:Mailbox/t:Name";
            mailXPath.mailFromAddress = "/s:Envelope/s:Body/m:GetItemResponse/m:ResponseMessages/m:GetItemResponseMessage/m:Items/t:Message/t:From/t:Mailbox/t:EmailAddress";
            mailXPath.mailSubject = "/s:Envelope/s:Body/m:GetItemResponse/m:ResponseMessages/m:GetItemResponseMessage/m:Items/t:Message/t:Subject";
            mailXPath.mailCategories = "/s:Envelope/s:Body/m:GetItemResponse/m:ResponseMessages/m:GetItemResponseMessage/m:Items/t:Message/t:Categories";
            mailXPath.mailConversationId = "/s:Envelope/s:Body/m:GetItemResponse/m:ResponseMessages/m:GetItemResponseMessage/m:Items/t:Message/t:ConversationId";
            mailXPath.mailConversationTopic = "/s:Envelope/s:Body/m:GetItemResponse/m:ResponseMessages/m:GetItemResponseMessage/m:Items/t:Message/t:ConversationTopic";
            mailXPath.mailSensitivity = "/s:Envelope/s:Body/m:GetItemResponse/m:ResponseMessages/m:GetItemResponseMessage/m:Items/t:Message/t:Sensitivity";
            mailXPath.mailHasAttachments = "/s:Envelope/s:Body/m:GetItemResponse/m:ResponseMessages/m:GetItemResponseMessage/m:Items/t:Message/t:HasAttachments";
            mailXPath.mailImportance = string.Empty;
            bytes = Convert.FromBase64String(xmlDocument.SelectSingleNode("/s:Envelope/s:Body/m:GetItemResponse/m:ResponseMessages/m:GetItemResponseMessage/m:Items/t:Message/t:MimeContent", nsmgr).InnerXml);
            GetMailProperties(mailXPath, ref mailMetaData, xmlDocument);

            return bytes;
        }