示例#1
0
        private bool IsConnected = false;   // Флаг подключения к серверу

        public void DragToSent(MailBox box)
        {
            try
            {
                string server = box.Settings.ImapServer;
                int    port   = box.Settings.ImapPort;
                bool   ssl    = box.Settings.Ssl;
                string user   = box.Settings.UserName;
                string pass   = box.Settings.Rassword;
                // Создание соединения с сервером
                Client = new IMAPClient(server, port, ssl);
                // Аутентификация на сервере
                if (Client.Login(user, pass).Contains("OK"))
                {
                    IsConnected = true;
                    int num = 0;
                    if ((num = Client.MessInFolder("INBOX")) > 0)
                    {
                        if (Client.SelectFolder("INBOX").Contains("OK"))
                        {
                            string pointer = box.Folders.Where(x => x.Type == TYPE_FOLDER.SENT).First().Pointer;
                            if (Client.Copy(pointer, num, num).Contains("OK"))
                            {
                                if (!Client.DeleteMessage(num))
                                {
                                    throw new Exception("Ошибка удаления письма. Удалите отправленное письмо из ящика INBOX");
                                }
                            }
                            else
                            {
                                throw new Exception("Ошибка копирования. Переместите отправленное письмо из ящика INBOX");
                            }
                        }
                    }
                }
                else
                {
                    throw new Exception("Ошибка подключения. Отправленное письмо сохранено в папке INBOX");
                }
            }
            catch (Exception ex)
            {
                // Наступление события ошибки
                OnException(ex);
            }
        }
示例#2
0
        // Загрузка списка писем в параллельном потоке
        public void LoadMessages(object obj)
        {
            int    num  = 0;
            string path = (string)obj;

            try
            {
                if (!IsConnected)
                {
                    throw new Exception("Не подключен к серверу");
                }
                // Получение количества писем в папке
                if ((num = Client.MessInFolder(path)) > 0)
                {
                    // Выбор папки
                    if (Client.SelectFolder(path).Contains("OK"))
                    {
                        Client.LoadTitleCompleted += Client_LoadTitleCompleted;
                        // Загрузка заголовков писем
                        Client.LoadTitleMessages(num);
                    }
                    else
                    {
                        throw new Exception("Ошибка выбора ящика");
                    }
                }
                else
                {
                    OnLoadedMessages(new List <MyMailMessage>());
                }
            }
            catch (Exception ex)
            {
                // Наступление события ошибки
                OnException(ex);
                // Наступление события список писем не загружен с сервера
                OnNotLoadMessages();
            }
        }