Exemple #1
0
        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);
            }
        }