В этом уроке мы напишем программу для проверки почты.
Первое что нам надо сделать, это определиться с заданиями которые нужно
чтобы выполняла данная программа. И так:
- Проверка почты
- Возможность задания периода проверки почты
- Вывод уведомлений при получении новых писем
И так начнём. Для начала нам нужно создать новый проект и поместить на
фору компонент 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. – Неудачное подключение с ошибкой
Этот вариант рассчитан для начинающих. Конечно можно включить фантазию и
доработать программу. Добавив сохранение параметров в файл, возможность
добавления много почтовых ящиков для проверки, возможность сворачивания в трей,
вывод уведомлений - когда есть новые сообщения и много чего другого. Если
кому интересна данная тематика – с радостью продолжу.
Спасибо за внимание.
Скачать исходник (Проект написан на Delphi 2010)
|