/// <summary>
        /// Starts messages fetching.
        /// </summary>
        public void StartFetching()
        {
            if(m_Fetching){
                return;
            }

            m_Fetching = true;

            try{
                DataView dvUsers = m_pApi.GetUsers("ALL");

                using(DataView dvServers = m_pApi.GetUserRemoteServers("")){
                    foreach(DataRowView drV in dvServers){
                        try{
                            if(!ConvertEx.ToBoolean(drV["Enabled"])){
                                continue;
                            }

                            // Find user name from user ID
                            string userName = "";
                            dvUsers.RowFilter = "UserID='" + drV["UserID"] + "'";
                            if(dvUsers.Count > 0){
                                userName = dvUsers[0]["UserName"].ToString();
                            }
                            else{
                                continue;
                            }

                            string server = drV.Row["RemoteServer"].ToString();
                            int    port   = Convert.ToInt32(drV.Row["RemotePort"]);
                            string user   = drV.Row["RemoteUserName"].ToString();
                            string passw  = drV.Row["RemotePassword"].ToString();
                            bool   useSSL = ConvertEx.ToBoolean(drV["UseSSL"]);

                            // Connect and login to pop3 server
                            using(POP3_Client clnt = new POP3_Client()){
                                clnt.SessionLog += new LogEventHandler(clnt_SessionLog);
                                clnt.LogCommands = LogCommands;
                                clnt.Connect(server,port,useSSL);
                                clnt.Authenticate(user,passw,false);

                                POP3_MessagesInfo messagesInfo = clnt.GetMessagesInfo();
                                foreach(POP3_MessageInfo messageInfo in messagesInfo.Messages){
                                    // Download message
                                    byte[] message = clnt.GetMessage(messageInfo.MessageNumber);

                                    // Store message
                                    m_pServer.ProcessUserMsg("","",userName,"Inbox",new MemoryStream(message),null);

                                    // Delete message
                                    clnt.DeleteMessage(messageInfo.MessageNumber);
                                }
                            }
                        }
                        catch{
                        }
                    }
                }

                m_LastFetch = DateTime.Now;
            }
            catch(Exception x){
                Error.DumpError(m_pServer.Name,x);
            }
            m_Fetching = false;
        }