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г.)
Используются технологии uCoz