private void EnumerateConversation(System.Collections.Generic.Stack <MailItem> st, object item, Outlook.Conversation conversation) { Outlook.SimpleItems items = conversation.GetChildren(item); if (items.Count > 0) { foreach (object myItem in items) { // In this example, enumerate only MailItem type. // Other types such as PostItem or MeetingItem // can appear in the conversation. if (myItem is Outlook.MailItem) { Outlook.MailItem mailItem = myItem as Outlook.MailItem; Outlook.Folder inFolder = mailItem.Parent as Outlook.Folder; string msg = mailItem.Subject + " in folder [" + inFolder.Name + "] EntryId [" + (mailItem.EntryID.ToString() ?? "NONE") + "]"; _logger.Debug(msg); _logger.Debug(mailItem.Sender); _logger.Debug(mailItem.ReceivedByEntryID); if (mailItem.EntryID != null && (mailItem.Sender != null || mailItem.ReceivedByEntryID != null)) { st.Push(mailItem); } } // Continue recursion. EnumerateConversation(st, myItem, conversation); } } }
private static bool IsMailItemOrAnyItsChildrenFlagged(Outlook.MailItem mailItem, Outlook.Conversation conv) { bool answer = false; if ((mailItem.FlagRequest != null) && (mailItem.FlagRequest != "")) { answer = true; } try { Outlook.SimpleItems items = conv.GetChildren(mailItem); if (items.Count > 0) { foreach (object myItem in items) { if (myItem is Outlook.MailItem) { bool result = IsMailItemOrAnyItsChildrenFlagged(myItem as Outlook.MailItem, conv); if (result == true) { answer = true; } } } } } catch (System.Runtime.InteropServices.COMException ex) { Debug.Print(ex.ToString()); } ClearMailItemFlagIfItsInSentItemFolder(mailItem); return(answer); }
private void EnumerateConversation(object item, Outlook.Conversation conversation, Outlook.MailItem filter, ref Dictionary <string, Outlook.MailItem> mailsFound) { Outlook.SimpleItems items = conversation.GetChildren(item); if (items.Count > 0) { foreach (object myItem in items) { // enumerate only MailItem type. if (myItem is Outlook.MailItem) { Outlook.MailItem m = myItem as Outlook.MailItem; Outlook.Folder inFolder = m.Parent as Outlook.Folder; string msg = m.Subject + " in folder " + inFolder.Name; Debug.WriteLine(msg); if (!mailsFound.ContainsKey(m.EntryID) && MailItemEquals(m, filter) && inFolder != deletedMailsFolder) { mailsFound.Add(m.EntryID, m); } } // Continue recursion. EnumerateConversation(myItem, conversation, filter, ref mailsFound); } } }
static void EnumerateConversation(object item, Outlook.Conversation conversation) { Outlook.SimpleItems items = conversation.GetChildren(item); if (items.Count > 0) { foreach (object myItem in items) { // In this example, enumerate only MailItem type. // Other types such as PostItem or MeetingItem // can appear in Conversation. if (myItem is Outlook.MailItem) { Outlook.MailItem mailItem = myItem as Outlook.MailItem; Outlook.Folder inFolder = mailItem.Parent as Outlook.Folder; string msg = mailItem.Subject + " in folder " + inFolder.Name; Debug.WriteLine(msg); } // Continue recursion. EnumerateConversation(myItem, conversation); } } }
void EnumerateConversation(object item, Outlook.Conversation conversation, int i, List <bool> categoryList, ref bool correctCategory) { SimpleItems items = conversation.GetChildren(item); if (items.Count > 0) { foreach (object myItem in items) { if (myItem is Outlook.MailItem) { MailItem mailItem = myItem as MailItem; Folder inFolder = mailItem.Parent as Folder; string msg = mailItem.Subject + " in folder " + inFolder.Name + " Sender: " + mailItem.SenderName + " Date: " + mailItem.ReceivedTime; if (i == 0) { if (mailItem.ReceivedTime > getInflowDate().AddDays(-7) && mailItem.SenderName.Equals(adminMail)) { msg += " ++correctCategory++"; correctCategory = true; } if (mailItem.ReceivedTime > getInflowDate()) { msg += " TYP: INFLOW"; categoryList[0] = true; } } else { if (mailItem.ReceivedTime > getInflowDate().AddDays(-7) && mailItem.SenderName.Equals(adminMail)) { msg += " ++correctCategory++"; correctCategory = true; } if (mailItem.SenderName.Equals(adminMail) && mailItem.ReceivedTime > getInflowDate()) { msg += " TYP: IN HANDS"; categoryList[1] = true; } } Debug.WriteLine(msg); OurDebug.AppendInfo(msg); i++; } EnumerateConversation(myItem, conversation, i, categoryList, ref correctCategory); } } }
private void updateEntireConversation(Outlook.MailItem mail) { string persTags = getPersistantCategories(mail.Categories); Outlook.Conversation conv = mail.GetConversation(); if (conv == null) { return; } Outlook.SimpleItems simpleItems = conv.GetRootItems(); foreach (object item in simpleItems) { if (item is Outlook.MailItem smail) { string cats = persTags; cats += getSenderCategory(smail.SenderName); cats += getAttachmentCategories(mail.Attachments); smail.Categories = getUniqueTags(cats); smail.Save(); } Outlook.SimpleItems OlChildren = conv.GetChildren(item); foreach (object rci in OlChildren) { if (rci is Outlook.MailItem icr) { string cats = persTags; cats += getSenderCategory(icr.SenderName); cats += getAttachmentCategories(mail.Attachments); icr.Categories = getUniqueTags(cats); icr.Save(); } } } }