Esempio n. 1
0
 // Подключение к IMAP-серверу c параметрами
 private void Connect(string adress, string server, int port, string user, string pass, bool ssl)
 {
     try
     {
         // Создание соединения с сервером
         Client = new IMAPClient(server, port, ssl);
         // Аутентификация на сервере
         if (Client.Login(user, pass).Contains("OK"))
         {
             Client.ListCompleted += Client_ListCompleted;
             // Загрузка списка папок
             Client.List();
         }
         else
         {
             throw new Exception("Ошибка подключения");
         }
         IsConnected = true;
     }
     catch (Exception ex)
     {
         // Наступление события ошибки
         OnException(ex);
         // Загрузка списка папок из файла
         List <Folder> folders = MailStorage.LoadFolders(adress);
         // Наступление события подключен
         OnConnected(folders);
     }
 }
Esempio n. 2
0
 // Обработка завершения подключения к серверу входящей почты
 private void InputMail_OnConnected(List <Folder> folders)
 {
     if (currentMailBox != null)
     {
         currentMailBox.Folders = folders;
         // Сохранение списка папок в файл
         MailStorage.SaveFolders(currentMailBox);
     }
 }
Esempio n. 3
0
        // Обработка того, что список писем не загружен с сервера
        private void InputMail_OnNotLoadMessages()
        {
            // Загрузка списка писем из файла
            List <MyMailMessage> messages = MailStorage.LoadHeaders(currentMailBox);
            // Сортировка списка писем по убыванию даты
            List <MyMailMessage> sorted = messages.OrderByDescending(x => x.Date).ToList();

            // Наступление события завершения загрузки списка писем
            InputMail_OnLoadedMessages(sorted);
        }
Esempio n. 4
0
        // Метод добавления тела письма  из файла
        public void AddBody(MailBox box)
        {
            MyMailMessage mess = MailStorage.LoadBody(box);

            Body          = mess.Body;
            IsBodyHtml    = mess.IsBodyHtml;
            myAttachments = new List <MyAttachment>();
            foreach (MyAttachment at in mess.myAttachments)
            {
                myAttachments.Add(new MyAttachment(at));
            }
        }
Esempio n. 5
0
 // Обработка завершения загрузки списка писем
 private void InputMail_OnLoadedMessages(List <MyMailMessage> messanges)
 {
     if (currentMailBox != null)
     {
         if (currentMailBox.SelectedFolder != null)
         {
             currentMailBox.SelectedFolder.Messages = new List <MyMailMessage>(messanges);
             // Сохранение заголовков писем в файл
             MailStorage.SaveHeaders(currentMailBox);
         }
     }
     // Наступает событие готовности к отображению списка писем
     OnViewListMess();
 }
Esempio n. 6
0
 // Метод загрузки списка писем
 public void LoadMessageList()
 {
     if (currentMailBox.SelectedFolder.Type == TYPE_FOLDER.DRAFTS || currentMailBox.SelectedFolder.Type == TYPE_FOLDER.TEMPLATE)
     {
         // Для папок черновиков и шаблонов
         // загружать список писем из файла
         List <MyMailMessage> messages = MailStorage.LoadHeaders(currentMailBox);
         InputMail_OnLoadedMessages(messages);
     }
     else
     {
         // Запуск загрузки списка писем из папки в параллельном потоке
         Thread inSlt = new Thread(new ParameterizedThreadStart(inputMail.LoadMessages));
         inSlt.Start(currentMailBox.SelectedFolder.Pointer);
     }
 }
Esempio n. 7
0
 // Обработка загрузки письма
 private void InputMail_OnLoadedMessage(string answer)
 {
     if (currentMailBox != null)
     {
         if (currentMailBox.SelectedFolder != null)
         {
             if (currentMailBox.SelectedFolder.Message != null)
             {
                 // Выбор адреса получателя, который будет отображаться первым
                 MailAddress firstAddress = null;
                 if (currentMailBox.SelectedFolder.Message.To.Where
                         (e => e.Address.Equals(currentMailBox.MyAddress.Address,
                                                StringComparison.OrdinalIgnoreCase)).Count() > 0)
                 {
                     firstAddress = currentMailBox.SelectedFolder.Message.To.Where
                                        (e => e.Address.Equals(currentMailBox.MyAddress.Address,
                                                               StringComparison.OrdinalIgnoreCase)).First();
                 }
                 if (firstAddress != null)
                 {
                     // Перемещение выбранного адреса получателя в начало списка
                     currentMailBox.SelectedFolder.Message.To.Remove(firstAddress);
                     currentMailBox.SelectedFolder.Message.To.Insert(0, firstAddress);
                 }
                 if (answer == "Is_not_loaded_message")
                 {
                     // Если загрузить тело письма с сервера не удалось
                     // получить тело письма из файла
                     currentMailBox.SelectedFolder.Message.AddBody(currentMailBox);
                 }
                 else // Иначе получить тело письма из ответа сервера
                 {
                     currentMailBox.SelectedFolder.Message.AddBody(answer);
                 }
                 // Сохранение тела письма в файл
                 MailStorage.SaveMessage(currentMailBox);
                 foreach (MyAttachment attach in currentMailBox.SelectedFolder.Message.MyAttachments)
                 {
                     // Очистка памяти от вложений письма
                     attach.Clear();
                 }
             }
         }
     }
     // Наступление события готовности письма к отображению
     OnViewMess();
 }