/// <summary> /// Uploads the email to specified folder in matter library. /// </summary> /// <param name="requestObject">web request object</param> /// <param name="client">Provider Service client Object</param> /// <param name="folderPath">target folder path for upload</param> /// <param name="filename">Name of the file</param> /// <param name="documentLibraryName">Name of the document library</param> /// <param name="xmlDocument">Mail XML Content</param> /// <param name="message">Reference object for the message to be returned</param> internal static void UploadMail(RequestObject requestObject, Client client, string folderPath, string fileName, string documentLibraryName, XmlDocument xmlDocument, ref string message) { var bytes = (dynamic)null; try { XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlDocument.NameTable); nsmgr.AddNamespace("s", ConstantStrings.SoapEnvelopURI); nsmgr.AddNamespace("m", ConstantStrings.ExchangeServiceMessage); nsmgr.AddNamespace("t", ConstantStrings.ExchangeServiceTypes); MailMetaData mailMetaData = new MailMetaData(); bytes = GetEmailProperties(xmlDocument, ref mailMetaData); using (MemoryStream memoryStream = new MemoryStream(bytes)) { using (MailMimeReader mime = new MailMimeReader()) { MailMessageParser messageParser = mime.GetEmail(memoryStream); mailMetaData.mailImportance = (string.IsNullOrWhiteSpace(messageParser.MailImportance)) ? ConstantStrings.MailDefaultImportance : messageParser.MailImportance; mailMetaData.receivedDate = (string.IsNullOrWhiteSpace(messageParser.ReceivedDate.Date.ToShortDateString())) ? string.Empty : Convert.ToString(messageParser.ReceivedDate, CultureInfo.InvariantCulture); UploadToFolder(requestObject, client, folderPath, fileName, string.Empty, memoryStream, documentLibraryName, mailMetaData, ref message); } } } catch (Exception exception) { Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName); } }
/// <summary> /// Method to be called if Overwrite flag is true /// </summary> /// <param name="request">Web request object</param> /// <param name="refreshToken">The refresh token for Client Context</param> /// <param name="environment">Flag to determine if deployed on Azure</param> /// <param name="upload">File parameters</param> /// <param name="fileName">Name of the file to be uploaded</param> /// <param name="fileExtension">Extension of the file being uploaded</param> /// <returns>Dictionary object having the key-value pair or mail properties</returns> private static Dictionary <string, string> ContinueUpload(HttpRequest request, string refreshToken, HttpPostedFile upload, string fileExtension) { Dictionary <string, string> mailProperties = new Dictionary <string, string> { { ConstantStrings.MailSenderKey, string.Empty }, { ConstantStrings.MailReceiverKey, string.Empty }, { ConstantStrings.MailReceivedDateKey, string.Empty }, { ConstantStrings.MailCCAddressKey, string.Empty }, { ConstantStrings.MailAttachmentKey, string.Empty }, { ConstantStrings.MailSearchEmailSubject, string.Empty }, { ConstantStrings.MailSearchEmailFromMailboxKey, string.Empty }, { ConstantStrings.MailFileExtensionKey, fileExtension }, { ConstantStrings.MailImportanceKey, string.Empty }, { ConstantStrings.MailConversationIdKey, string.Empty }, { ConstantStrings.MailConversationTopicKey, string.Empty }, { ConstantStrings.MailSentDateKey, string.Empty }, { ConstantStrings.MailHasAttachmentsKey, string.Empty }, { ConstantStrings.MailSensitivityKey, string.Empty }, { ConstantStrings.MailCategoriesKey, string.Empty }, { ConstantStrings.MailOriginalName, string.Empty } }; if (string.Equals(fileExtension, ConstantStrings.EmailFileExtension, StringComparison.OrdinalIgnoreCase)) { using (ClientContext clientContext = ServiceUtility.GetClientContext(null, new Uri(UIConstantStrings.CentralRepository), refreshToken, request)) { Users currentUserDetail = UIUtility.GetLoggedInUserDetails(clientContext); mailProperties[ConstantStrings.MailSearchEmailFromMailboxKey] = currentUserDetail.Name; Stream fileStream = upload.InputStream; mailProperties = MailMessageParser.GetMailFileProperties(fileStream, mailProperties); // Reading properties only for .eml file } } return(mailProperties); }
/// <summary> /// Uploads the .eml file to specified folder in matter library. /// </summary> /// <param name="documentLibraryName">Name of the document library</param> /// <param name="requestObject">web request object</param> /// <param name="client">Provider Service client Object</param> /// <param name="folderPath">target folder path for upload</param> /// <param name="fileName">File name</param> /// <param name="message">Reference object for the message to be returned</param> /// <param name="xmlDocument">XML document object having information for the attachment</param> /// <param name="nsmgr">XML Namespace object</param> /// <param name="mailMetaData">Mail metadata object storing property values</param> /// <param name="bytes">Array of bytes</param> /// <param name="extension">File extension object contains extension of file to be uploaded.</param> private static void UploadEMLFile(string documentLibraryName, RequestObject requestObject, Client client, string folderPath, string fileName, ref string message, XmlDocument xmlDocument, XmlNamespaceManager nsmgr, ref MailMetaData mailMetaData, ref dynamic bytes, string extension) { string mailMessage = xmlDocument.SelectSingleNode("/s:Envelope/s:Body/m:GetAttachmentResponse/m:ResponseMessages/m:GetAttachmentResponseMessage/m:Attachments/t:FileAttachment/t:Content", nsmgr).InnerXml; bytes = Convert.FromBase64String(mailMessage); using (MemoryStream memoryStream = new MemoryStream(bytes)) { mailMetaData.mailSender = string.Empty; mailMetaData.mailReceiver = string.Empty; mailMetaData.receivedDate = string.Empty; mailMetaData.cc = string.Empty; Dictionary <string, string> mailProperties = new Dictionary <string, string> { { ConstantStrings.MailSenderKey, mailMetaData.mailSender }, { ConstantStrings.MailReceiverKey, mailMetaData.mailReceiver }, { ConstantStrings.MailReceivedDateKey, mailMetaData.receivedDate }, { ConstantStrings.MailCCAddressKey, mailMetaData.cc }, { ConstantStrings.MailCategoriesKey, string.Empty }, { ConstantStrings.MailSensitivityKey, string.Empty }, { ConstantStrings.MailAttachmentKey, string.Empty }, { ConstantStrings.MailSearchEmailSubject, string.Empty }, { ConstantStrings.MailFileExtensionKey, extension }, { ConstantStrings.MailImportanceKey, string.Empty }, { ConstantStrings.MailConversationIdKey, string.Empty }, { ConstantStrings.MailConversationTopicKey, string.Empty }, { ConstantStrings.MailSentDateKey, string.Empty }, { ConstantStrings.MailHasAttachmentsKey, string.Empty }, { ConstantStrings.MailOriginalName, string.Empty } }; mailProperties = MailMessageParser.GetMailFileProperties(memoryStream, mailProperties); mailMetaData.mailImportance = mailProperties[ConstantStrings.MailImportanceKey]; mailMetaData.mailReceiver = mailProperties[ConstantStrings.MailReceiverKey]; mailMetaData.receivedDate = mailProperties[ConstantStrings.MailReceivedDateKey]; mailMetaData.cc = mailProperties[ConstantStrings.MailCCAddressKey]; mailMetaData.categories = mailProperties[ConstantStrings.MailCategoriesKey]; mailMetaData.mailSubject = mailProperties[ConstantStrings.MailSearchEmailSubject]; mailMetaData.attachment = mailProperties[ConstantStrings.MailAttachmentKey]; mailMetaData.mailSender = mailProperties[ConstantStrings.MailSenderKey]; mailMetaData.sentDate = mailProperties[ConstantStrings.MailSentDateKey]; mailMetaData.originalName = mailProperties[ConstantStrings.MailSearchEmailSubject]; UploadToFolder(requestObject, client, folderPath, fileName, mailProperties[ConstantStrings.MailFileExtensionKey], memoryStream, documentLibraryName, mailMetaData, ref message); } }
private Dictionary <string, string> ContinueUpload(IFormFile uploadedFile, string fileExtension) { Dictionary <string, string> mailProperties = new Dictionary <string, string> { { ServiceConstants.MAIL_SENDER_KEY, string.Empty }, { ServiceConstants.MAIL_RECEIVER_KEY, string.Empty }, { ServiceConstants.MAIL_RECEIVED_DATEKEY, string.Empty }, { ServiceConstants.MAIL_CC_ADDRESS_KEY, string.Empty }, { ServiceConstants.MAIL_ATTACHMENT_KEY, string.Empty }, { ServiceConstants.MAIL_SEARCH_EMAIL_SUBJECT, string.Empty }, { ServiceConstants.MAIL_SEARCH_EMAIL_FROM_MAILBOX_KEY, string.Empty }, { ServiceConstants.MAIL_FILE_EXTENSION_KEY, fileExtension }, { ServiceConstants.MAIL_IMPORTANCE_KEY, string.Empty }, { ServiceConstants.MAIL_CONVERSATIONID_KEY, string.Empty }, { ServiceConstants.MAIL_CONVERSATION_TOPIC_KEY, string.Empty }, { ServiceConstants.MAIL_SENT_DATE_KEY, string.Empty }, { ServiceConstants.MAIL_HAS_ATTACHMENTS_KEY, string.Empty }, { ServiceConstants.MAIL_SENSITIVITY_KEY, string.Empty }, { ServiceConstants.MAIL_CATEGORIES_KEY, string.Empty }, { ServiceConstants.MailOriginalName, string.Empty } }; if (string.Equals(fileExtension, ServiceConstants.EMAIL_FILE_EXTENSION, StringComparison.OrdinalIgnoreCase)) { var client = new Client() { Url = generalSettings.CentralRepositoryUrl }; Users currentUserDetail = userRepository.GetLoggedInUserDetails(client); mailProperties[ServiceConstants.MAIL_SEARCH_EMAIL_FROM_MAILBOX_KEY] = currentUserDetail.Name; Stream fileStream = uploadedFile.OpenReadStream(); mailProperties = MailMessageParser.GetMailFileProperties(fileStream, mailProperties); // Reading properties only for .eml file } return(mailProperties); }