/// <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); }
/// <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", ServiceConstants.SOAP_ENVELOP_URI); nsmgr.AddNamespace("m", ServiceConstants.EXCHANGE_SERVICE_MESSAGE); nsmgr.AddNamespace("t", ServiceConstants.EXCHANGE_SERVICE_TYPES); 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 += ServiceConstants.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 + ServiceConstants.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 + ServiceConstants.SEMICOLON; } } }
/// <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 void UploadAttachedMailExtBlank(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", ServiceConstants.SOAP_ENVELOP_URI); nsmgr.AddNamespace("m", ServiceConstants.EXCHANGE_SERVICE_MESSAGE); nsmgr.AddNamespace("t", ServiceConstants.EXCHANGE_SERVICE_TYPES); 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)) ? ServiceConstants.MAIL_DEFAULT_IMPORTANCE : mailMetaData.mailImportance; using (MemoryStream memoryStream = new MemoryStream(bytes)) { UploadToFolder(client, folderPath, fileName + ServiceConstants.EMAIL_FILE_EXTENSION, 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 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", ServiceConstants.SOAP_ENVELOP_URI); nsmgr.AddNamespace("m", ServiceConstants.EXCHANGE_SERVICE_MESSAGE); nsmgr.AddNamespace("t", ServiceConstants.EXCHANGE_SERVICE_TYPES); 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; }
/// <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; } } }