[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); } } } }
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); }
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; } } } }
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); } } } } } }
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)); } } } } }
[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); } } } }
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; } } } } }