DELPHISOURCE
Домой | Статьи | Книги | FAQ | Компоненты | Программы |
Архив сайта | Реклама на сайте | Ссылки | Связь |
NMPOP3
Хочу поделиться своими изысками по этому компоненту из линейки FastNet Delphi. Много читал и слышал о нем хорошего, еще больше плохого. Спорить не буду, хотелось бы видеть данный ресурс более открытым для программиста, но ...
Тем не менее, с ним можно работать, и даже очень эффективно. Вот что мне удалось собрать в свою довольно малую бытность программистом POP3-протокола.
Изначально необходимо сделать отступление. Оно относится к типу TPowerSock, потомком которого и является TNPOP3.
Сначала рассмотрим методы и свойства TPowerSock, а в купе с ним, соответственно, и сваойства TNMPOP3.
Адрес сервера, с которым будет устанавливаться соединение, задается свойством
property Host: string;
(так, например, адрес сервера "chat.ru").
Здесь допустимы как символьное (доменное) описание имени сервера (см. выше), так и IP-адрес (192.12.166.13). Протол при этом указывать не надо (т.е. префиксы типа http:\\ или ftp:\\ не требуются).
Для установки соединения используется метод
procedure Connect;
Если все параметры, указанные выше установлены, то происходит соединение с заданным адресом. Если соединение прошло успешно, то вызывается событие OnConnect.
Основные ошибки, возможные при установке соединения:
не указан логин или пароль пользователя - событие OnAuthenticationNeed;
не задан неверно логин или пароль пользователя - событие OnAuthenticationFailed.
В этих случаях необходимо задать правильные значения требуемых параметров и установить значение Handled соотвествующих обработчиков в TRUE, иначе произойдет исключительная ситуация.
Для разрыва соединения используется метод
procedure Disconnect;
который при удачном завершении вызывает событие OnDisconnect.
Теперь можно непосредственно перейти к компоненту NMPOP3 и его свойствам.
Адрес порта указывается в свойстве
property Port: integer.
Для каждого протокола значение порта уникально, в частности для POP3 это значение 110.
Далее следуют следующие, необходимые для соединения, свойства:
property UserID: string; - имя (логин) пользователя,
property Password: string; - пароль.
Так как в составе сообщения нередко передаются вложенные файлы, то для то, чтобы их было удобно разместить используется свойство
property AttachFilePath: string; - путь для хранения вложенных файлов.
Здесь необходимо заметить, что во время приемя сообщения, в любом случае создаются временные файлы с расширением *.tmp, в котором хранится текст принятого сообщения, которые фактически дублируют принятое сообщение. Все, что могу порекомендовать по этому поводу, так то, что после окончания приема сообщений с адреса удалять все эти файлы. Да, кстати, если путь в AttachFilePath не указан, или указан неверно, то вложенные файлы, как и временные, сохраняются в дирректории, из которой запущено прилежение.
property ReportLevel: integer.
Данное свойство хараткеризует степень детализации сообщений, посылаемых в параметре Status во время появления события OnStatus.
Возможные значения этого свойства:
Status_None = 0;
Status_Information = 1;
Status_Basic = 2;
Status_Routines = 4;
Status_Debug = 8;
Status_Trace = 16;
Как ясно из их названий, с ростом значения свойства ReportLevel количество информации возрастает.
property TimeOut: integer;
В этом свойстве задается время ожидания ответа от сервера. Если его установить в 0, то ожидание будет равно бесконечности.
В случае удачной установки соединения с почтовым сервером, вы имеете следующие возможности:
проверить количество сообщений в почтовом ящике: proprty MailCount: integer;
получить список сообщений, хранящихся в ящике: procedure List. В результате приниема каждого заголока вызывается событие OnList (пример можно посмотреть в htlp'e nmpop3.hlp стандартной постаки Delphi);
для получения более подробной информации используется метод
procedure GetSummaru(MailNumber: integer), где MailNumber - порядковый номер от 1 до
MailCount. При этом параметры письма можно получить в свойстве
property Sumary: TSummary;
Для получения письма необходимо вызвать метод
procedure GetMailMessage(MailNumber: integer);
Полученное сообщение можно проанализировать и прочитать, обратившись к свойству:
property MailMessage: TMailMessage;
Это основная информация по использованию данного компонента.
Delphisource (2006г.) |