/// <summary>
        /// This is a recursive method to display contents of a folder
        /// </summary>
        /// <param name="folderInfo"></param>
        /// <param name="pst"></param>
        private static void DisplayFolderContents(FolderInfo folderInfo, PersonalStorage pst)
        {
            // ExStart:GetMessageInformationDisplayFolderContents
            // Display the folder name
            Console.WriteLine("Folder: " + folderInfo.DisplayName);
            Console.WriteLine("==================================");
            // Display information about messages inside this folder
            MessageInfoCollection messageInfoCollection = folderInfo.GetContents();
            foreach (MessageInfo messageInfo in messageInfoCollection)
            {
                Console.WriteLine("Subject: " + messageInfo.Subject);
                Console.WriteLine("Sender: " + messageInfo.SenderRepresentativeName);
                Console.WriteLine("Recipients: " + messageInfo.DisplayTo);
                Console.WriteLine("------------------------------");
            }

            // Call this method recursively for each subfolder
            if (folderInfo.HasSubFolders == true)
            {
                foreach (FolderInfo subfolderInfo in folderInfo.GetSubFolders())
                {
                    DisplayFolderContents(subfolderInfo, pst);
                }
            }
            // ExEnd:GetMessageInformationDisplayFolderContents
        }
        /// <summary>
        /// This is a recursive method to display contents of a folder
        /// </summary>
        /// <param name="folderInfo"></param>
        /// <param name="pst"></param>
        private static void DisplayFolderContents(FolderInfo folderInfo, PersonalStorage pst)
        {
            // ExStart:GetMessageInformationDisplayFolderContents
            // Display the folder name
            Console.WriteLine("Folder: " + folderInfo.DisplayName);
            Console.WriteLine("==================================");
            // Display information about messages inside this folder
            MessageInfoCollection messageInfoCollection = folderInfo.GetContents();

            foreach (MessageInfo messageInfo in messageInfoCollection)
            {
                Console.WriteLine("Subject: " + messageInfo.Subject);
                Console.WriteLine("Sender: " + messageInfo.SenderRepresentativeName);
                Console.WriteLine("Recipients: " + messageInfo.DisplayTo);
                Console.WriteLine("------------------------------");
            }

            // Call this method recursively for each subfolder
            if (folderInfo.HasSubFolders == true)
            {
                foreach (FolderInfo subfolderInfo in folderInfo.GetSubFolders())
                {
                    DisplayFolderContents(subfolderInfo, pst);
                }
            }
            // ExEnd:GetMessageInformationDisplayFolderContents
        }
Пример #3
0
        private MessageInfo GetEmailMessagesById(FolderInfo folderInfo, string fieldId)
        {
            MessageInfo           result = null;
            MessageInfoCollection messageInfoCollection = folderInfo.GetContents();

            foreach (MessageInfo messageInfo in messageInfoCollection)
            {
                if (messageInfo.EntryIdString == fieldId)
                {
                    result = messageInfo;
                    break;
                }
            }

            if (result == null && folderInfo.HasSubFolders)
            {
                foreach (FolderInfo subfolderInfo in folderInfo.GetSubFolders())
                {
                    result = GetEmailMessagesById(subfolderInfo, fieldId);
                    if (result != null)
                    {
                        break;
                    }
                }
            }
            return(result);
        }
Пример #4
0
        /// <summary>
        /// This is a recursive method to display contents of a folder
        /// </summary>
        /// <param name="folderInfo"></param>
        /// <param name="pst"></param>
        private static void ExtractMsgFiles(FolderInfo folderInfo, PersonalStorage pst)
        {
            // ExStart:ExtractMessagesFromPSTFileExtractMsgFiles
            // display the folder name
            Console.WriteLine("Folder: " + folderInfo.DisplayName);
            Console.WriteLine("==================================");
            // loop through all the messages in this folder
            MessageInfoCollection messageInfoCollection = folderInfo.GetContents();

            foreach (MessageInfo messageInfo in messageInfoCollection)
            {
                Console.WriteLine("Saving message {0} ....", messageInfo.Subject);
                // get the message in MapiMessage instance
                MapiMessage message = pst.ExtractMessage(messageInfo);
                // save this message to disk in msg format
                message.Save(message.Subject.Replace(":", " ") + ".msg");
                // save this message to stream in msg format
                MemoryStream messageStream = new MemoryStream();
                message.Save(messageStream);
            }

            // Call this method recursively for each subfolder
            if (folderInfo.HasSubFolders == true)
            {
                foreach (FolderInfo subfolderInfo in folderInfo.GetSubFolders())
                {
                    ExtractMsgFiles(subfolderInfo, pst);
                }
            }
            // ExEnd:ExtractMessagesFromPSTFileExtractMsgFiles
        }
        /// <summary>
        /// This is a recursive method to display contents of a folder
        /// </summary>
        /// <param name="folderInfo"></param>
        /// <param name="pst"></param>
        private static void ExtractMsgFiles(FolderInfo folderInfo, PersonalStorage pst)
        {
            // ExStart:ExtractMessagesFromPSTFileExtractMsgFiles
            // display the folder name
            Console.WriteLine("Folder: " + folderInfo.DisplayName);
            Console.WriteLine("==================================");
            // loop through all the messages in this folder
            MessageInfoCollection messageInfoCollection = folderInfo.GetContents();
            foreach (MessageInfo messageInfo in messageInfoCollection)
            {
                Console.WriteLine("Saving message {0} ....", messageInfo.Subject);
                // get the message in MapiMessage instance
                MapiMessage message = pst.ExtractMessage(messageInfo);
                // save this message to disk in msg format
                message.Save(message.Subject.Replace(":", " ") + ".msg");
                // save this message to stream in msg format
                MemoryStream messageStream = new MemoryStream();
                message.Save(messageStream);
            }

            // Call this method recursively for each subfolder
            if (folderInfo.HasSubFolders == true)
            {
                foreach (FolderInfo subfolderInfo in folderInfo.GetSubFolders())
                {
                    ExtractMsgFiles(subfolderInfo, pst);
                }
            }
            // ExEnd:ExtractMessagesFromPSTFileExtractMsgFiles
        }
Пример #6
0
        static void CountContents(FolderInfo folder)
        {
            FolderInfoCollection rootFolders = folder.GetSubFolders();

            totalItems += folder.ContentCount;

            if (folder.ContentCount > 0)
            {
                //foreach (var message in folder.GetContents(i, 50))
                foreach (var message in folder.EnumerateMapiMessages())
                {
                    var mi = new MessageInfo {
                        Id = message.InternetMessageId, Subject = message.Subject, AttachmentCount = message.Attachments.Count
                    };
                    Console.WriteLine(mi.Subject);
                    outputData.Add(mi);
                }
            }

            Console.WriteLine(folder.DisplayName + ": " + folder.ContentCount.ToString());

            foreach (FolderInfo subFolder in rootFolders)
            {
                // totalItems += subFolder.GetSubFolders().Count();
                CountContents(subFolder);
            }
        }
Пример #7
0
        void HandleFolderAndSubfolders(Action <MapiMessage> handler, FolderInfo folderInfo, MailConversionOptions options)
        {
            foreach (MapiMessage mapiMessage in folderInfo.EnumerateMapiMessages())
            {
                handler(mapiMessage);
            }

            if (folderInfo.HasSubFolders == true)
            {
                foreach (FolderInfo subfolderInfo in folderInfo.GetSubFolders())
                {
                    HandleFolderAndSubfolders(handler, subfolderInfo, options);
                }
            }
        }
        // Walk the folder structure recursively
        private static void WalkFolders(FolderInfo folder, string parentFolderName, IList<string> folderData)
        {
            //ExStart:ParseSearchableFolders-WalkFolders
            string displayName = (string.IsNullOrEmpty(folder.DisplayName)) ? "ROOT" : folder.DisplayName;
            string folderNames = string.Format("DisplayName = {0}; Parent.DisplayName = {1}", displayName, parentFolderName);
            folderData.Add(folderNames);
            if (displayName == "Finder")
            {
                Console.WriteLine("Test this case");
            }

            if (!folder.HasSubFolders)
            {
                return;
            }
            FolderInfoCollection coll = folder.GetSubFolders(FolderKind.Search | FolderKind.Normal);
            foreach (FolderInfo subfolder in coll)
            {
                WalkFolders(subfolder, displayName, folderData);
            }
            //ExEnd:ParseSearchableFolders-WalkFolders
        }
Пример #9
0
        // Walk the folder structure recursively
        private static void WalkFolders(FolderInfo folder, string parentFolderName, IList <string> folderData)
        {
            string displayName = (string.IsNullOrEmpty(folder.DisplayName)) ? "ROOT" : folder.DisplayName;
            string folderNames = string.Format("DisplayName = {0}; Parent.DisplayName = {1}", displayName, parentFolderName);

            folderData.Add(folderNames);
            if (displayName == "Finder")
            {
                Console.WriteLine("Test this case");
            }

            if (!folder.HasSubFolders)
            {
                return;
            }
            FolderInfoCollection coll = folder.GetSubFolders(FolderKind.Search | FolderKind.Normal);

            foreach (FolderInfo subfolder in coll)
            {
                WalkFolders(subfolder, displayName, folderData);
            }
        }
        public static void Run()
        {
            // ExStart:SearchMessagesAndFoldersInPST
            // The path to the File directory.
            string dataDir = RunExamples.GetDataDir_Outlook();

            using (PersonalStorage personalStorage = PersonalStorage.FromFile(dataDir + "Outlook.pst"))
            {
                FolderInfo folder = personalStorage.RootFolder.GetSubFolder("Inbox");
                PersonalStorageQueryBuilder builder = new PersonalStorageQueryBuilder();

                // High importance messages
                builder.Importance.Equals((int)MapiImportance.High);
                MessageInfoCollection messages = folder.GetContents(builder.GetQuery());
                Console.WriteLine("Messages with High Imp:" + messages.Count);

                builder = new PersonalStorageQueryBuilder();
                builder.MessageClass.Equals("IPM.Note");
                messages = folder.GetContents(builder.GetQuery());
                Console.WriteLine("Messages with IPM.Note:" + messages.Count);

                builder = new PersonalStorageQueryBuilder();
                // Messages with attachments AND high importance
                builder.Importance.Equals((int)MapiImportance.High);
                builder.HasFlags(MapiMessageFlags.MSGFLAG_HASATTACH);
                messages = folder.GetContents(builder.GetQuery());
                Console.WriteLine("Messages with atts: " + messages.Count);

                builder = new PersonalStorageQueryBuilder();
                // Messages with size > 15 KB
                builder.MessageSize.Greater(15000);
                messages = folder.GetContents(builder.GetQuery());
                Console.WriteLine("messags size > 15Kb:" + messages.Count);

                builder = new PersonalStorageQueryBuilder();
                // Unread messages
                builder.HasNoFlags(MapiMessageFlags.MSGFLAG_READ);
                messages = folder.GetContents(builder.GetQuery());
                Console.WriteLine("Unread:" + messages.Count);

                builder = new PersonalStorageQueryBuilder();
                // Unread messages with attachments
                builder.HasNoFlags(MapiMessageFlags.MSGFLAG_READ);
                builder.HasFlags(MapiMessageFlags.MSGFLAG_HASATTACH);
                messages = folder.GetContents(builder.GetQuery());
                Console.WriteLine("Unread msgs with atts: " + messages.Count);

                // Folder with name of 'SubInbox'
                builder = new PersonalStorageQueryBuilder();
                builder.FolderName.Equals("SubInbox");
                FolderInfoCollection folders = folder.GetSubFolders(builder.GetQuery());
                Console.WriteLine("Folder having subfolder: " + folders.Count);

                builder = new PersonalStorageQueryBuilder();
                // Folders with subfolders
                builder.HasSubfolders();
                folders = folder.GetSubFolders(builder.GetQuery());
                Console.WriteLine(folders.Count);
            }
            // ExEnd:SearchMessagesAndFoldersInPST
        }