示例#1
0
        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);
                }
            }
        }
示例#2
0
        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);
        }
示例#3
0
        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);
                }
            }
        }
示例#4
0
 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);
                }
            }
        }
示例#6
0
        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();
                    }
                }
            }
        }