private void OnMailModifyImpl(MAPIFullNtf ntf) { if (CheckStorageIgnored(_storeID)) { return; } try { IEFolder folder = OutlookSession.OpenFolder(ntf.ParentID, _storeID); if (folder == null) { return; } using ( folder ) { FolderDescriptor folderDescriptor = FolderDescriptor.Get(folder); if (folderDescriptor.ContainerClass == FolderType.IMAP) { if (!ProcessMailAddNtf.ProcessIMAPMessage(folder, ntf.EntryID)) { return; } } IEMessage message = OutlookSession.OpenMessage(ntf.EntryID, _storeID); if (message == null) { return; } using ( message ) { ProcessMailModifyImpl(ntf, message, folderDescriptor); } } } catch (System.Threading.ThreadAbortException ex) { Tracer._TraceException(ex); } catch (Exception exception) { Core.ReportBackgroundException(exception); } }
private void OnNewMailImpl(MAPINtf ntf) { Trace("[New] *Email* - OnNewMailImpl"); if (CheckStorageIgnored(_storeID)) { Trace("OnNewMailImpl: storage is ignored"); return; } FolderDescriptor folderDescriptor = FolderDescriptor.Get(ntf.ParentID, _storeID); if (folderDescriptor == null) { Trace("OnNewMailImpl: folderDescriptor == null"); return; } if (folderDescriptor.ContainerClass == FolderType.IMAP) { IEFolder folder = OutlookSession.OpenFolder(ntf.ParentID, _storeID); if (folder == null) { return; } using ( folder ) { if (!ProcessMailAddNtf.ProcessIMAPMessage(folder, ntf.EntryID)) { return; } } } IEMessage message = OutlookSession.OpenMessage(ntf.EntryID, _storeID); if (message == null) { Trace("OnNewMailImpl: cannot open mapi message"); return; } using ( message ) { try { string entryId = OutlookSession.GetMessageID(message); if (OutlookSession.IsMailExported(entryId)) { Trace("OnNewMailImpl: mail is exported at the moment"); return; } new NewMailDescriptor(folderDescriptor, entryId, message).QueueJob(JobPriority.AboveNormal); } catch (System.Threading.ThreadAbortException ex) { Tracer._TraceException(ex); } catch (Exception exception) { Core.ReportBackgroundException(exception); } } }