public void FetchBalanceMessage()
        {
            while (true)
            {
                int messageCount = 0;

                List <BalanceMessage> listBalanceMessage = new List <BalanceMessage>();
                Pop3Client            client             = new Pop3Client();
                try
                {
                    client.Connect(hostname, port, useSsl);
                    client.Authenticate(username, password);

                    messageCount = client.GetMessageCount();

                    for (int i = 1; i <= messageCount; i++)
                    {
                        MessageHeader  headers = client.GetMessageHeaders(i);
                        RfcMailAddress from    = headers.From;
                        if (from.HasValidMailAddress && from.Address.Contains("*****@*****.**"))
                        {
                            DateTime date    = Convert.ToDateTime(headers.Date);
                            Message  message = client.GetMessage(i);
                            //MessagePart plainText = message.FindFirstPlainTextVersion();

                            BalanceMessage bMessage = new BalanceMessage();
                            bMessage.date = date;
                            bMessage.text = message.MessagePart.GetBodyAsText();

                            Regex           regex   = new Regex(@"\d\.\d+");
                            MatchCollection matches = regex.Matches(bMessage.text);

                            try
                            {
                                NumberFormatInfo provider = new NumberFormatInfo();
                                provider.NumberDecimalSeparator = ".";
                                double amount = Convert.ToDouble(matches[0].Value, provider);
                                bMessage.amount = amount;

                                //Console.WriteLine(bMessage.date + " : " + bMessage.amount);
                                listBalanceMessage.Add(bMessage);
                                client.DeleteMessage(i);
                            }
                            catch (Exception ex)
                            {
                                //Console.WriteLine(ex.Message);
                                if (_del != null)
                                {
                                    _del(this.GetType().ToString() + " : " + System.Reflection.MethodBase.GetCurrentMethod().Name + ex.Message);
                                }
                                break;
                            }
                        }
                    }
                    client.Disconnect();
                }
                catch (Exception ex)
                {
                    //Console.WriteLine(ex.Message);
                    if (_del != null)
                    {
                        _del(this.GetType().ToString() + " : " + System.Reflection.MethodBase.GetCurrentMethod().Name + ex.Message);
                    }
                }
                client.Dispose();

                SaveTxt(listBalanceMessage);

                Thread.Sleep(1000 * 60 * 60);
            }
        }
        public List <BalanceMessage> LoadTxt()
        {
            List <BalanceMessage> listBalanceTotal = new List <BalanceMessage>();

            if (File.Exists(filename))
            {
                List <BalanceMessage> listBalance = new List <BalanceMessage>();
                StreamReader          fs          = new StreamReader(filename);
                string s = "";
                while ((s = fs.ReadLine()) != null)
                {
                    int            index    = s.IndexOf("\t");
                    string         date     = s.Substring(0, index);
                    string         amount   = s.Substring(index + 1, s.Length - index - 1);
                    BalanceMessage bMessage = new BalanceMessage();

                    NumberFormatInfo provider = new NumberFormatInfo();
                    provider.NumberDecimalSeparator = ",";

                    bMessage.amount = Convert.ToDouble(amount, provider);
                    bMessage.date   = Convert.ToDateTime(date);
                    listBalance.Add(bMessage);

                    //Console.WriteLine("from file = " + bMessage.date + " : " + bMessage.amount);
                }

                double amountDay = 0;

                int i = 0;

                DateTime date1 = listBalance[0].date;

                while (i < listBalance.Count)
                {
                    DateTime date2 = listBalance[i].date;
                    //double diff = (date2 - date1).TotalDays;

                    if ((date1.Year == date2.Year) && (date1.Month == date2.Month) && (date1.Day == date2.Day))
                    {
                        amountDay = amountDay + listBalance[i].amount;
                        i         = i + 1;
                    }

                    DateTime curDate = DateTime.Now;

                    if (((date1.Year == date2.Year) && (date1.Month == date2.Month) && (date1.Day != date2.Day)) ||
                        ((date1.Year == date2.Year) && (date1.Month != date2.Month)) ||
                        ((date1.Year != date2.Year)) ||
                        i == listBalance.Count)
                    {
                        BalanceMessage bMessageTotal = new BalanceMessage();
                        bMessageTotal.date = Convert.ToDateTime(date1.ToShortDateString());

                        if ((curDate.Year == date1.Year) && (curDate.Month == date1.Month) && (curDate.Date == date1.Date))
                        {
                            bMessageTotal.hours = (curDate - date1).Hours;
                        }
                        else
                        {
                            bMessageTotal.hours = (listBalance[i - 1].date - date1).Hours;
                        }

                        bMessageTotal.amount = amountDay;
                        listBalanceTotal.Add(bMessageTotal);

                        if (i < listBalance.Count)
                        {
                            date1 = listBalance[i].date;
                        }

                        amountDay = 0;
                    }
                }
            }
            else
            {
                //Console.WriteLine(filename + " не найден!");
                if (_del != null)
                {
                    _del(this.GetType().ToString() + " : " + System.Reflection.MethodBase.GetCurrentMethod().Name + " : " + filename + " не найден!");
                }
            }

            return(listBalanceTotal);
        }