Александр Андрощук / Владимир Любаев
В этом уроке мы напишем программу для проверки почты.
Первое что нам надо сделать, это определиться с заданиями которые нужно чтобы выполняла данная программа. И так:
- Проверка почты
- Возможность задания периода проверки почты
- Вывод уведомлений при получении новых писем
И так начнём. Для начала нам нужно создать новый проект и поместить на фору компонент idPOP3,который находиться на закладке IndyClients. Для того чтобы проверить почту нам необходимо передать компоненту idPOP3 некоторые параметры для подключения:
Username - адрес электронной почты в формате (xxx@xxx.xx)
Password - пароль к данному почтовому ящику
Host - POP3 сервер (pop.mail.ru; pop3.ukr.net)
Port - порт (по умолчанию 110)
Размещаем на форме компонент GroupBox из вкладки Standard - для группирования полей. Для того чтобы программа была более гибкой - поместим 4 компонента Edit и Label, они находятся на закладке Standard. Установим свойства компонентов, как показано в Табл.1.
Табл.1.
Компонент |
Свойство |
Значение |
Описание |
GroupBox1 |
Caption |
Настройки ящика |
|
Label1 |
Caption |
Адрес |
|
Label2 |
Caption |
Пароль |
|
Label3 |
Caption |
POP3 сервер |
|
Label4 |
Caption |
Порт |
|
Edit1 |
Text |
|
Адрес |
Edit2 |
Text |
|
Пароль |
|
PasswordChar |
* |
|
Edit3 |
Text |
|
POP3 сервер |
Edit4 |
Text |
|
Порт |
|
NumbersOnly |
true |
Можно вводить только числа |
Результат можно просмотреть на Рис.1.
Рис.1.
Для того чтобы программа проверяла через определённо время наличие писем - необходимо поместить на форму компонент Timer, который находиться на закладке System. Для задания интервала проверки, нам необходимо добавить на форму кнопку (Button на панели Standard), поле ввода Edit (панель Standard) и компонент Memo для вывода системных сообщений. Установим для них следующие свойства:
Компонент |
Свойство |
Значение |
Button1 |
Caption |
Установить |
Memo1 |
Lines |
|
Edit5 |
Text |
|
|
NumbersOnly |
true |
Timer |
Enabled |
false |
В результате мы получим следующий вид окна (Рис.2.):
Рис.2.
Дальше создадим код для события onClick кнопки Button1(для того чтобы создать данное событие необходимо два раза кликнуть на кнопку, или перейти в Object Inspector перейти на закладку Events, и два раза кликнуть по пустому полю возле названия onClick): После создания события автоматически сгенерируется следующий код:
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
После его редактирования мы получим следующий код:
procedure TForm1.Button1Click(Sender: TObject);
var
sec:Integer; // объявляем переменную для записи в неё количество мсек.
begin
Timer1.Enabled:=false; //остановка таймера
sec:=StrToInt(Edit5.Text)*60000; // определяем интервал проверки
Timer1.Interval:=sec; // задаём интервал проверки
Timer1.Enabled:=true; //запускаем таймера
Memo1.Lines.Add('Почта будет проверена через '+Edit5.Text+' мин.');
// Вывод оповещения в Memo
end;
Всё очень просто мы останавливаем таймер, в том случае если он запущен, определяем время его срабатывания, записываем данное время в интервал и запускаем таймер.
Теперь перейдём непосредственно к таймеру. Два раза кликаем левой кнопкой мыши на компонент Timer, после чего вы перейдёте в редактор кода, при этом автоматически сгенерируется обработчик события OnTimer:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
end;
Реализуем код для получения писем:
procedure TForm1.Timer1Timer(Sender: TObject);
var
NumOfMsgs:Integer; // Количество писем
begin
try
IdPOP31.Username:=Edit1.Text; // адрес электронной почты в формате(xxx@xxx.xx)
IdPOP31.Password:=Edit2.Text; // пароль к данному почтовому ящику
IdPOP31.Host:=Edit3.Text; // POP3 сервер (pop.mail.ru; pop3.ukr.net)
IdPOP31.Port:=StrToInt(Edit4.Text); // порт
IdPOP31.Connect; // подключаемся
if IdPOP31.Connected then // если подключение прошло успешно
begin
NumOfMsgs := idpop31.CheckMessages;
// записываем в NumOfMsgs количество писем
// выводим сообщения в Мемо
Memo1.Lines.Add('Подключение прошло успешно!');
Memo1.Lines.Add('У вас '+IntToStr(NumOfMsgs)+' сообщений');
end
except // Если произошла ошибка- выводим её в Memo1
on E:Exception do Memo1.Lines.Add('Ошибка подключения! '+E.Message);
end;
IdPOP31.Disconnect; // Для отключения
end;
Данная часть кода выполняет следующие действия:
- Передает введённые нами параметры с Edit1.. Edit4 в IdPOP31
- Подключается к серверу
- Если подключение прошло успешно - выводит в Memo1 количество сообщений, иначе выводит сообщение с ошибкой подключения.
- Отключаемся от сервера
Результат работы можно посмотреть на скриншотах ниже:
Рис.3. - Удачное подключение с выводом количества писем
Рис.4. - Неудачное подключение с ошибкой
Этот вариант рассчитан для начинающих. Конечно можно включить фантазию и доработать программу. Добавив сохранение параметров в файл, возможность добавления много почтовых ящиков для проверки, возможность сворачивания в трей, вывод уведомлений - когда есть новые сообщения и много чего другого. Если кому интересна данная тематика - с радостью продолжу.
Спасибо за внимание.