Esempio n. 1
0
        [Test]//, Ignore( "Investigating problems on OMNIAMEA-UNIT")]
        public void Test()
        {
            FolderDescriptor folderDescriptor = FolderEnum.SearchFolder("Format");

            Assert.IsNotNull(folderDescriptor);
            IEFolder folder =
                OutlookSession.OpenFolder(folderDescriptor.FolderIDs.EntryId, folderDescriptor.FolderIDs.StoreId);

            Assert.IsNotNull(folder);
            using ( folder )
            {
                IEMessages messages = folder.GetMessages();
                Assert.IsNotNull(messages);
                using ( messages )
                {
                    Assert.AreEqual(1, messages.GetCount());
                    IEMessage mail = messages.OpenMessage(0);
                    Assert.IsNotNull(mail);
                    using ( mail )
                    {
                        MessageBody msgBody = mail.GetRawBodyAsRTF();
                        Assert.AreEqual(MailBodyFormat.PlainTextInRTF, msgBody.Format);
                    }
                }
            }
        }
Esempio n. 2
0
            private void LoadMessageID()
            {
                IEFolder folderFirst =
                    OutlookSession.OpenFolder(_folderFirst.FolderIDs.EntryId, _folderFirst.FolderIDs.StoreId);

                Assert.IsNotNull(folderFirst);
                using ( folderFirst )
                {
                    IEMessages messages = folderFirst.GetMessages();
                    Assert.IsNotNull(messages);
                    using ( messages )
                    {
                        if (messages.GetCount() == 0)
                        {
                            Assert.Fail("Source folder should have at least one message");
                        }
                        if (messages.GetCount() != 1)
                        {
                            Assert.Fail("Source folder should have one message");
                        }
                        IEMessage message = messages.OpenMessage(0);
                        Assert.IsNotNull(message);
                        using ( message )
                        {
                            _messageID = OutlookSession.GetMessageID(message);
                            _recordKey = message.GetBinProp(MAPIConst.PR_RECORD_KEY);
                        }
                    }
                }
                Assert.IsNotNull(_messageID);
            }
Esempio n. 3
0
            void EnumerateMailWithBody(IEFolder mapiFolder)
            {
                IEMessages messages = mapiFolder.GetMessages();

                if (messages == null)
                {
                    return;
                }
                using ( messages )
                {
                    int count = messages.GetCount();
                    if (count > 100)
                    {
                        count = 100;
                    }
                    for (int i = 0; i < count; ++i)
                    {
                        IEMessage message = messages.OpenMessage(i);
                        if (message == null)
                        {
                            continue;
                        }
                        using ( message )
                        {
                            string plainBody = message.GetPlainBody();
                            plainBody = plainBody;
                        }
                    }
                }
            }
Esempio n. 4
0
        private void EnumerateTasks(FolderDescriptor folder, IEFolder mapiFolder)
        {
            OnFolderFetched(folder.Name);

            IEMessages messages = mapiFolder.GetMessages();

            if (messages != null)
            {
                using ( messages )
                {
                    int count = messages.GetCount();
                    for (int i = 0; i < count; i++)
                    {
                        IEMessage message = messages.OpenMessage(i);
                        if (message != null)
                        {
                            using ( message )
                            {
                                string entryID = OutlookSession.GetMessageID(message);
                                TaskDescriptor.Do(folder, message, entryID);
                            }
                        }
                    }
                }
            }
        }
Esempio n. 5
0
        private void ProcessContactFolder(PairIDs folderIDs, string abName)
        {
            IEFolder folder = null;

            try
            {
                folder = OutlookSession.OpenFolder(folderIDs.EntryId, folderIDs.StoreId);
            }
            catch (System.Threading.ThreadAbortException)
            {
            }
            catch (Exception exception)
            {
                if (exception is COMException &&
                    ((COMException)exception).ErrorCode != (unchecked ((int)0x80040111)))       //ClassFactory cannot supply requested class
                {
                    return;
                }
                Core.ReportException(exception, ExceptionReportFlags.AttachLog);
                return;
            }
            if (folder == null)
            {
                return;
            }
            using ( folder )
            {
                OutlookAddressBook AB = new OutlookAddressBook(abName, folderIDs, true);
                AB.RunAB();
                IEMessages messages = folder.GetMessages();
                if (messages == null)
                {
                    return;
                }
                using ( messages )
                {
                    int mesCount = messages.GetCount();
                    for (int i = 0; i < mesCount; i++)
                    {
                        if (ShuttingDown)
                        {
                            break;
                        }
                        OutlookSession.ProcessJobs();
                        IEMessage message = messages.OpenMessage(i);
                        if (message == null)
                        {
                            continue;
                        }
                        using ( message )
                        {
                            string mesEntryID = OutlookSession.GetMessageID(message);
                            Core.ResourceAP.QueueJob(new ContactDescriptor(message, mesEntryID, mesEntryID, AB));
                        }
                    }
                }
            }
        }
Esempio n. 6
0
        [Test]//, Ignore( "Investigating problems on OMNIAMEA-UNIT")]
        public void GetSetCategories()
        {
            FolderEnum       folderEnum       = FolderEnum.SearchForFolders(new string[] { "TasksTest" });
            FolderDescriptor folderDescriptor = folderEnum.GetFolderDescriptor("TasksTest");

            Assert.IsNotNull(folderDescriptor);
            IEFolder folder =
                OutlookSession.OpenFolder(folderDescriptor.FolderIDs.EntryId, folderDescriptor.FolderIDs.StoreId);

            Assert.IsNotNull(folder);
            using ( folder )
            {
                IEMessages messages = folder.GetMessages();
                Assert.IsNotNull(messages);
                using ( messages )
                {
                    Assert.AreEqual(1, messages.GetCount());
                    IEMessage task = messages.OpenMessage(0);
                    Assert.IsNotNull(task);
                    using ( task )
                    {
                        ArrayList categories = OutlookSession.GetCategories(task);
                        Assert.AreEqual(null, categories);
                        categories = new ArrayList();
                        categories.Add("category1");
                        categories.Add("category2");
                        categories.Add("category3");
                        OutlookSession.SetCategories(task, categories);
                        task.SaveChanges();
                    }
                    task = messages.OpenMessage(0);
                    Assert.IsNotNull(task);
                    using ( task )
                    {
                        ArrayList categories = OutlookSession.GetCategories(task);
                        Assert.AreEqual(3, categories.Count);
                        categories.Remove("category1");
                        categories.Remove("category2");
                        categories.Remove("category3");
                        Assert.AreEqual(0, categories.Count);
                        OutlookSession.SetCategories(task, null);
                        task.SaveChanges();
                    }
                    task = messages.OpenMessage(0);
                    Assert.IsNotNull(task);
                    using ( task )
                    {
                        ArrayList categories = OutlookSession.GetCategories(task);
                        Assert.AreEqual(null, categories);
                    }
                }
            }
        }
Esempio n. 7
0
        private void FindResourceToDelete(IEFolder parentFolder, IResource parentMAPIFolder, string storeId)
        {
            // NOTE: In Cached Exchange mode (at least), messages can be opened successfully
            // immediately after they are permanently deleted, but opening them through
            // the short-term entry ID that we got in the notification still does not work.
            // Thus, if the message was permanently deleted in Outlook, the code below will
            // not find the deleted message, and we will have to rely on background enumeration
            // to delete it.
            // When the message is permanently deleted in OmniaMea, we immediately delete
            // the resource as well.
            IResourceList children = parentMAPIFolder.GetLinksOfType(null, PROP.MAPIFolder);

            foreach (IResource child in children.ValidResources)
            {
                if (child.HasProp(PROP.EntryID))
                {
                    IEMessage deletedItem = OutlookSession.OpenMessage(child.GetStringProp(PROP.EntryID), storeId);
                    if (deletedItem != null)
                    {
                        //  Item exists in the folder, the object is not needed anymore
                        deletedItem.Dispose();
                    }
                    else
                    {
                        Trace.WriteLine("Failed to open resource with ID=" + child.Id + ", queueing for delete");
                        _resourceToDelete = child;
                        break;
                    }
                }
            }
            if (_resourceToDelete == null)
            {
                HashSet set = new HashSet(children.Count);
                Tracer._Trace("Cannot find deleted mail.");
                Tracer._Trace("Try another algorithm.");
                foreach (IResource child in children.ValidResources)
                {
                    if (!child.HasProp(PROP.EntryID))
                    {
                        continue;
                    }
                    set.Add(child.GetStringProp(PROP.EntryID));
                }

                IEMessages messages = parentFolder.GetMessages();
                if (messages != null)
                {
                    using ( messages )
                    {
                        for (int i = 0; i < messages.GetCount(); i++)
                        {
                            IEMessage message = messages.OpenMessage(i);
                            if (message != null)
                            {
                                using ( message )
                                {
                                    string entryid = message.GetBinProp(MAPIConst.PR_ENTRYID);
                                    if (entryid != null)
                                    {
                                        set.Remove(entryid);
                                    }
                                }
                            }
                        }
                    }
                }
                if (set.Count > 0)
                {
                    foreach (HashSet.Entry entry in set)
                    {
                        FindResourcesByEntryId((string)entry.Key);
                        if (_resourceToDelete != null)
                        {
                            Tracer._Trace("Resource found for deleting.");
                            break;
                        }
                    }
                }
            }
        }