/// <summary>
        /// Gets specified IMAP folder's messges info.
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="folder">IMAP folder which messages info to get. Eg. 'Inbox'.</param>
        /// <param name="messages"></param>
        public void GetMessagesInfo(string userName,string folder,LumiSoft.Net.IMAP.Server.IMAP_Messages messages)
        {
            switch(m_DB_Type)
            {
                #region DB_Type.XML

                case DB_Type.XML:
                    string path = m_MailStorePath + "Mailboxes\\" + userName + "\\" + folder;

                    // Check if Directory exists, if not Create for Inbox only
                    if(!Directory.Exists(path)){
                        if(folder.ToLower().Trim() == "inbox"){
                            Directory.CreateDirectory(path);
                        }
                        else{
                            throw new Exception("Folder '" + folder + "' doesn't exist");
                        }
                    }

                    string[] files = Directory.GetFiles(path,"*.eml");

                    foreach(string file in files){
                        int messageSize = 0;
                        using(FileStream fStream = File.OpenRead(file)){
                            messageSize = (int)fStream.Length;
                        }

                        // date[yyyyMMddHHmmss]_int[uid]_int[flags]
                        string[] fileParts = Path.GetFileNameWithoutExtension(file).Split('_');
                        DateTime recieveDate = DateTime.ParseExact(fileParts[0],"yyyyMMddHHmmss",System.Globalization.DateTimeFormatInfo.InvariantInfo);
                        int      uid         = Convert.ToInt32(fileParts[1]);
                        LumiSoft.Net.IMAP.Server.IMAP_MessageFlags flags = (LumiSoft.Net.IMAP.Server.IMAP_MessageFlags)Enum.Parse(typeof(LumiSoft.Net.IMAP.Server.IMAP_MessageFlags),fileParts[2]);

                        messages.AddMessage(Path.GetFileNameWithoutExtension(file),uid,flags,messageSize,recieveDate);
                    }

                    break;

                #endregion

                #region DB_Type.MSSQL

                case DB_Type.MSSQL:
                    using(WSqlCommand sqlCmd = new WSqlCommand(m_ConStr,"lspr_GetMessageList")){
                        sqlCmd.AddParameter("@Mailbox",SqlDbType.NVarChar,userName);
                        sqlCmd.AddParameter("@Folder" ,SqlDbType.NVarChar,folder);

                        DataSet ds = sqlCmd.Execute();
                        ds.Tables[0].TableName = "lsMailStore";

                        foreach(DataRow dr in ds.Tables["lsMailStore"].Rows){
                            string   messageID = dr["MessageID"].ToString();
                            int      size      = Convert.ToInt32(dr["Size"]);
                            DateTime date      = Convert.ToDateTime(dr["Date"]);
                            int      flags     = Convert.ToInt32(dr["MessageFlags"]);
                            int      uid       = Convert.ToInt32(dr["UID"]);
                            messages.AddMessage(messageID,uid,(IMAP_MessageFlags)flags,size,date);
                        }
                    }
                    break;

                #endregion
            }
        }
        /// <summary>
        /// Gets Inbox messages info for specified user mailbox.
        /// </summary>
        /// <param name="mailBox"></param>
        /// <param name="msgs"></param>
        public void GetMessageList(string mailBox,LumiSoft.Net.POP3.Server.POP3_Messages msgs)
        {
            switch(m_DB_Type)
            {
                #region DB_Type.XML

                case DB_Type.XML:
                    string path = m_MailStorePath + "Mailboxes\\" + mailBox + "\\Inbox\\";

                    // Check if Directory exists, if not Create
                    if(!Directory.Exists(path)){
                        Directory.CreateDirectory(path);
                    }

                    string[] files = Directory.GetFiles(path,"*.eml");

                    foreach(string file in files){
                        int messageSize = 0;
                        using(FileStream fStream = File.OpenRead(file)){
                            messageSize = (int)fStream.Length;
                        }

                        msgs.AddMessage(Path.GetFileNameWithoutExtension(file),messageSize);
                    }
                    break;

                #endregion

                #region DB_Type.MSSQL

                case DB_Type.MSSQL:
                    using(WSqlCommand sqlCmd = new WSqlCommand(m_ConStr,"lspr_GetMessageList")){
                        sqlCmd.AddParameter("@Mailbox",SqlDbType.NVarChar,mailBox);
                        sqlCmd.AddParameter("@Folder" ,SqlDbType.NVarChar,"Inbox");

                        DataSet ds = sqlCmd.Execute();
                        ds.Tables[0].TableName = "lsMailStore";

                        foreach(DataRow dr in ds.Tables["lsMailStore"].Rows){
                            string messageID = dr["MessageID"].ToString();
                            int    size      = Convert.ToInt32(dr["Size"]);
                            msgs.AddMessage(messageID,size);
                        }
                    }
                    break;

                #endregion
            }
        }