private void ChangeFolder(string strFolder) { GXLogging.Debug(log, "Changing folder"); if (newMessages < 0 || newMessages > 1) { GXLogging.Error(log, "Invalid NewMessages value"); throw new GXMailException("Invalid NewMessages value", 27); } Folder defaultFolder = null; Folder parentFolder = null; Folder folder = null; bool foundFolder = false; inFolder = false; message = null; if (loggedIn) { try { defaultFolder = (Folder)session.GetDefaultFolder(CdoDefaultFolderTypes.CdoDefaultFolderInbox); if ((defaultFolder != null) && !defaultFolder.Name.Equals("")) { parentFolder = GetParentFolder(defaultFolder, ref foundFolder); string[] foldersArr = strFolder.Split(new char[] { '\\' }); for (int i = 0; i < foldersArr.Length; i++) { if (string.IsNullOrEmpty(foldersArr[i])) { continue; } else if (foldersArr[i].Equals(".")) { if (foundFolder) { folder = parentFolder; } } else if (foldersArr[i].Equals("..")) { if (!foundFolder) { throw new GXMailException("Could not open folder " + strFolder, 5); } else { foundFolder = false; folder = GetParentFolder(parentFolder, ref foundFolder); } } else if (foldersArr[i].Equals("Inbox")) { folder = (Folder)session.GetDefaultFolder(CdoDefaultFolderTypes.CdoDefaultFolderInbox); } else if (foldersArr[i].Equals("Outbox")) { folder = (Folder)session.GetDefaultFolder(CdoDefaultFolderTypes.CdoDefaultFolderOutbox); } else if (foldersArr[i].Equals("Sent Items")) { folder = (Folder)session.GetDefaultFolder(CdoDefaultFolderTypes.CdoDefaultFolderSentItems); } else if (foldersArr[i].Equals("Deleted Items")) { folder = (Folder)session.GetDefaultFolder(CdoDefaultFolderTypes.CdoDefaultFolderDeletedItems); } else if (folder != null) { foundFolder = false; folder = GetFolder((Folders)folder.Folders, foldersArr[i], ref foundFolder); if (!foundFolder) { break; } } else { foundFolder = false; folder = GetFolder((Folders)parentFolder.Folders, foldersArr[i], ref foundFolder); if (!foundFolder) { break; } } } } } catch (Exception exc) { GXLogging.Error(log, "Could not open folder", exc); throw new GXMailException("Could not open folder", 5); } if (folder == null) { folder = defaultFolder; } if (folder != null) { inFolder = true; readItems = (Messages)folder.Messages; if (newMessages == 1) { MessageFilter filter = (MessageFilter)readItems.Filter; filter.Unread = newMessages; } readItems.Sort(optional, optional); } else { GXLogging.Error(log, "Could not open folder"); throw new GXMailException("Could not open folder", 5); } } else { GXLogging.Error(log, "Not logged in"); throw new GXMailException("Not logged in", 2); } }