private static bool MoveFolder(string storeID, string entryID, string folderID, PairIDs delFolderIds) { if (folderID == null || folderID == delFolderIds.EntryId) { return(false); } IEFolder delFolder = OutlookSession.OpenFolder(delFolderIds.EntryId, delFolderIds.StoreId); if (delFolder == null) { return(false); } using ( delFolder ) { IEFolder folder = OutlookSession.OpenFolder(folderID, storeID); if (folder == null) { return(false); } using ( folder ) { try { folder.MoveFolder(entryID, delFolder); return(true); } catch (COMException exception) { OutlookSession.OutlookProcessor.HandleException(exception); return(false); } } } }
protected void ExecuteActionImpl(IResourceList selectedResources) { Tracer._Trace("Execute action: MoveFolderToFolderAction"); if (_selectedFolder == null || _targetFolder == null) { return; } IEFolder destFolder = OutlookSession.OpenFolder(_selectedFolder.EntryId, _selectedFolder.StoreId); if (destFolder == null) { return; } using ( destFolder ) { for (int i = 0; i < selectedResources.Count; i++) { PairIDs folderIDs = PairIDs.Get(selectedResources[i]); if (folderIDs == null) { continue; } IResource parentFolder = Folder.GetParent(selectedResources[i]); PairIDs parentFolderIDs = PairIDs.Get(parentFolder); if (parentFolderIDs == null) { continue; } IEFolder ieFolder = OutlookSession.OpenFolder(parentFolderIDs.EntryId, parentFolderIDs.StoreId); if (ieFolder == null) { continue; } using ( ieFolder ) { Tracer._Trace("Move folder: " + folderIDs.EntryId.GetHashCode() + "/" + folderIDs.EntryId); try { ieFolder.MoveFolder(folderIDs.EntryId, destFolder); } catch (COMException exception) { Tracer._TraceException(exception); if (exception.ErrorCode == (unchecked ((int)0x8004010F))) { StandartJobs.MessageBox("Folder is not found", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } else if (exception.ErrorCode == (unchecked ((int)0x80040604))) { StandartJobs.MessageBox("Collision. Probably target folder has subfolder with the same name", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } else if (exception.ErrorCode == (unchecked ((int)0x80040119)) || exception.ErrorCode == (unchecked ((int)0x8004dff2))) { StandartJobs.MessageBox("Unspecified error. Can't move or copt folder.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { StandartJobs.MessageBox(exception.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } } }