Оглавление Учебный POP3-Client (TIdPOP3 и TIdMessage)


TIdPOP3

Если Вы используете компоненты TIdPOP3 и TIdMessage, то переходите на более высокий уровень программирования (по сравнению с TClientSocket и TIdTCPClient).

В Делфи7 входит версия 9 библиотеки компонентов Indy.
 (новые версии см. http://indy.nevrona.com)

---- Описание работы программы: ------
Применяется декодирование, но здесь не обсуждается.
(Form2.2FormCreate)
1. При запуске создает папку для почты, имя которой содержит дату и время
2. Проверяет наличие папки IniDir, если нет - создает
3. Проверяет, при отсутствии создает файлы Logins.txt Hosts.txt
4. При наличии файлов Logins.txt Hosts.txt загружает из них списки в ComboBox
---------
5. Показывает Form2. Пользователь задает Host, Port, Login, Password
6. и жмет кнопку Подключиться (Button1)
(Form2.Button1Click)
7. Устанавливает значения свойств Host, Port, Username, Password компонента
 POP31(TIdPOP3) и вызывает его метод .Connect
8. С помощью метода .CheckMessages получает NumMsg - количество сообщений
в ящике.
9. Если NumMsg<=0 разрывает соединение: IdPOP31.Disconnect
10. Вызывает метод Form1.AfterConn
(Form1.AfterConn)
11. Создается объект М класса TIdMessage и объект SL (TStringList)
12. Цикл по сообщениям:
   - IdPOP31.RetrieveHeader помещает очередной заголовок в М.
   - SL заполняется полями заголовка очередного сообщения
     (From, To, Subject, Date, Content-Type) .
   - выделяются поля заголовка: От_кого, Кому, сохраняются
     в OtKogoS, KomuS.
   - заполняется очередная строка таблицы viewZAgl значениями
     OtKogoS, KomuS, а также поля: Subject, Date, Size
     (Size возвращается методом IdPOP31.RetrieveMsgSize),
     Content-Type.
13. Освобождаются объекты М, SL. 
--------
14. Показывает Form1.
-------
(Form1.FormCreate)
15. Подготавливается Компонент viewZAgl: TListView.
    (заполняются заголовки).
---------
16. В таблице viewZAgl пользователь отмечает сообщения, которые
нужно получить и жмет кнопку Получить выбранные письма (btnChecked)
(можно также отметить удаляемые из ящика сообщения, выделив нужные строки).
 Что делает btnCheckedClick ?
17. Создает невидимый вспомогательный объект Memo1.
18. Создает объекты M (TIdMessage) и SL (TStringList);
19. Цикл по всем сообщениям:
   - Если сообщение отмечено (viewZAgl.Items[ii].Checked)
      в таблице viewZAgl, то
      *) повторно извлекаются значения полей заголовка
      (From, To, Subject, Date, Content-Type) а также
      поля Content-Transfer-Encoding
      *)Меняется иконка этой строки (обозначает - обработано)
      *)Создается имя подкаталога DirNam для этого сообщения.
      *)Создается папка DirNam и она становится текущей
      *)Если выбрано Сохранять заголовки сообщений, то
       в файле Headers.txt сохраняется заголовок сообщения.
      *) Если сообщение не имеет частей, то:
         +) тело сообщения копируется в SL.Text
         +) SL сохраняется в файле Body.htm или Body.txt
       иначе сообщение сохраняется по частям.
20.  Цикл по всем сообщениям:
     - Если сообщение выделено (viewZAgl.Items[ii].Selected)
       в таблице viewZAgl, то удалить его
       ( form2.IdPOP31.Delete(ii+1); )
ВЫВОД:
 Использование компонентов TIdPOP3 и TIdMessage облегчает программирование.
 Используются: TIdPOP3:
 .Port, .Host, .Username, .PassWord, .Connect, .Connected,
 .Disconnect, .CheckMessages - количество сообщений в ящике на сервере,
 .RetrieveHeader(ii, M: TIdMessage) - ii - номер сообщения, М - хранит заголовок,
 .RetrieveMsgSize(ii) - размер ii-го сообщения,
 .Retrieve(ii+1, M) - всё сообщение, т е заголовок и все части помещаются в М,
 .Delete(ii) - удаляет ii-е сообщение,
 .OnStatus-(IdPOP31Status) - событие (изменение статуса соединения)
 -----------
 TIdMessage:
   .Clear, .Headers.ConvertToStdValues, .Free, .Create, .MessageParts.Count,
   .MessageParts.Items[jj], 
Скачать RAR-архив исходников + .exe(420 Кб)

Rambler's Top100
Hosted by uCoz