/// <summary>
        /// Обрабатывает очередь сообщений
        /// </summary>
        private void FlushQueue()
        {
            using (var httpRequestScope = Locator.BeginNestedHttpRequestScope())
            {
                // Репозиторий
                var repository = Locator.GetService<IMailNotificationMessagesRepository>();
                var messages = repository.GetEnqueuedMessages().ToList();
                var uniSenderApiKey = System.Configuration.ConfigurationManager.AppSettings["UniSenderApiKey"];

                // Выходим если в очереди пусто
                if (messages.Count == 0)
                {
                    return;
                }

                // Получаем данные для отправки
                var connectionData = new MailConnectionString(System.Configuration.ConfigurationManager.AppSettings["MailConnectionString"]);

                // Обрабатываем очередь
                Logger.Info(string.Format("Обрабатываем очередь сообщений, в очереди {0} писем", messages.Count));
                var sendedCount = 0;
                foreach (var msg in messages)
                {
                    var client = new WebClient();
                    var request = "http://api.unisender.com/ru/api/sendEmail?format=json";
                    var requestParams = new NameValueCollection();
                    requestParams.Add("api_key", uniSenderApiKey);
                    requestParams.Add("email", msg.Recipient);
                    requestParams.Add("sender_name", "CityPlace");
                    requestParams.Add("sender_email", "*****@*****.**");
                    requestParams.Add("subject", msg.Subject);
                    requestParams.Add("body", msg.Content);
                    requestParams.Add("list_id", "2619464");
                    requestParams.Add("lang", "ru");

                    // Пытаемся отправить
                    try
                    {
                        var response = Encoding.UTF8.GetString(client.UploadValues(request, requestParams));
                        if (response.Contains("\"email_id\""))
                        {
                            sendedCount++;
                        }
                        else
                        {
                            throw new Exception("Не удалось отправить сообщение т.к. UniSender не вернул его id");
                        }
                    }
                    catch (Exception e)
                    {
                        Logger.Error(string.Format("Не удалось отправить письмо получателю {0} по причине: {1}", msg.Recipient, e.Message));
                        continue;
                    }

                    // Помечаем письмо как отправленное
                    msg.Sended = true;
                    msg.DateSended = DateTime.Now;
                    repository.SubmitChanges();
                }

                Logger.Info(string.Format("Обработка очереди сообщений завершена. Отправлено {0} писем из {1}", sendedCount, messages.Count));
            }
        }
        /// <summary>
        /// Обрабатывает очередь сообщений
        /// </summary>
        private void FlushQueue()
        {
            var notifications = Convert.ToBoolean(ConfigurationManager.AppSettings["Notifications"]);
            if (!notifications)
            {
                return;
            }
            using (var httpRequestScope = Locator.BeginNestedHttpRequestScope())
            {
                // Репозиторий
                var repository = Locator.GetService<IMailNotificationMessagesRepository>();
                var messages = repository.GetEnqueuedMessages().ToList();

                // Выходим если в очереди пусто
                if (messages.Count == 0)
                {
                    return;
                }

                // Получаем данные для отправки
                var connectionData = new MailConnectionString(System.Configuration.ConfigurationManager.AppSettings["MailConnectionString"]);

                // Подгатавливаем клиент
                var mailClient = new SmtpClient(connectionData.Host, connectionData.Port)
                {
                    DeliveryMethod = SmtpDeliveryMethod.Network,
                    Credentials = new NetworkCredential(connectionData.Login, connectionData.Password),
                    EnableSsl = connectionData.UseSsl
                };

                // Обрабатываем очередь
                Logger.Info(string.Format("Обрабатываем очередь сообщений, в очереди {0} писем", messages.Count));
                var sendedCount = 0;
                foreach (var msg in messages)
                {
                    // Формируем письмо
                    var mailMessage = new MailMessage(new MailAddress(connectionData.FromAddress, connectionData.FromName),
                                                      new MailAddress(msg.Recipient))
                    {
                        Subject = msg.Subject,
                        SubjectEncoding = Encoding.UTF8,
                        Body = msg.Content,
                        BodyEncoding = Encoding.UTF8,
                        IsBodyHtml = true
                    };

                    // Пытаемся отправить
                    try
                    {
                        mailClient.Send(mailMessage);
                        sendedCount++;
                    }
                    catch (Exception e)
                    {
                        Logger.Error(string.Format("Не удалось отправить письмо получателю {0} по причине: {1}", msg.Recipient, e.Message));
                        continue;
                    }

                    // Помечаем письмо как отправленное
                    msg.Sended = true;
                    msg.DateSended = DateTime.Now;
                    repository.SubmitChanges();
                }

                Logger.Info(string.Format("Обработка очереди сообщений завершена. Отправлено {0} писем из {1}", sendedCount, messages.Count));
            }
        }