Exemplo n.º 1
0
        /// <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);
            }
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        /// <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);
            }
        }
Exemplo n.º 4
0
        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);
        }