Проверка почты средствами Delphi

Опубиковано: 20.12.2009 г., автор: , просмотров: 56733

    Delphi уроки - проверяем почту

    В этом уроке мы напишем программу для проверки почты.
    Первое что нам надо сделать, это определиться с заданиями  которые нужно чтобы выполняла данная программа. И так:

    1. Проверка почты
    2. Возможность задания периода проверки почты
    3. Вывод уведомлений при получении новых писем

    И так начнём. Для начала нам нужно создать новый проект и  поместить на фору компонент idPOP3,который находиться на закладке IndyClients. Для того чтобы проверить почту нам необходимо передать компоненту idPOP3 некоторые параметры для подключения:
    Username – адрес электронной почты в формате ([email protected])
    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;   // адрес электронной почты в формате ([email protected])
    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;

    Данная часть кода выполняет следующие действия:

    1. Передает введённые нами параметры с Edit1.. Edit4 в IdPOP31
    2. Подключается к серверу
    3. Если подключение прошло успешно – выводит в Memo1 количество сообщений, иначе выводит сообщение с ошибкой подключения.
    4. Отключаемся от сервера

    Результат работы можно посмотреть на скриншотах ниже:


    Рис.3. – Удачное подключение с выводом количества писем

    Рис.4. – Неудачное подключение с ошибкой

    Этот вариант рассчитан для начинающих. Конечно можно включить фантазию и доработать программу. Добавив сохранение параметров в файл, возможность добавления много почтовых ящиков для проверки, возможность сворачивания в трей, вывод уведомлений  - когда есть новые сообщения и много чего другого. Если кому интересна данная тематика – с радостью продолжу.

    Спасибо за внимание.

    Скачать исходник (Проект написан на Delphi 2010)

    Дописываю материал и уезжаю в во Вьетнам, а вы пока осваивайте уроки по программированию ну, а если тоже интересуют поездки за границу, тогда советую вам отдых во вьетнаме по минимальным ценам путешествуем друзья!

    Хотите участвовать в конкурсах и постепенно вливаться в нашу команду ?!
    Тогда прямо сейчас подписывайтесь на бесплатную мультимедийную рассылку сайта delphiexpert.ru
    Нас уже больше чем 4000 человек ! Подписаться



    Похожие материалы

    Последние из рубрики

    Графской Виктор Николаевич 03 Nov 2019 в 05:53 #
    Графской Виктор Николаевич 1975 года рождения, уроженец г.Москва.

    Финансовый советник и ведущий аналитик инвестиционной компании "Атон". Плодотворно сотрудничал с "E3 Investment", известной успешными вложениями в высоколиквидную недвижимость.

    Активный участник многих бизнес форумов, выступающий с актуальными докладами и предлагающий решения в сложных аспектах малого и среднего бизнеса.

    Виктор Николаевич, неоднократно был отмечен в активном привлечении инвестиций в сельское хозяйство Краснодарского края. Нельзя не отметить пользу от общественной деятельности в Московском регионе, такую как благотворительность и меценатство.
    Игорь 20 Sep 2019 в 21:57 #
    Я вот как работал в windows XP и со средой седьмой версии, так и работаю....
    Вот эти вещи действительно проверены в бою....
    Игорь 20 Sep 2019 в 21:55 #
    Мало того, что версия 2010-го года выгладит ужасно, как сжатый комок всех форм, ,,,,так она ещё и занимает почти гигабайт жесткого диска, у меня нет слов
    Изуродовали такую красивую среду....
    Игорь 20 Sep 2019 в 21:51 #
    Вышла новая версия среды,- все, переходим на неё!
    Скоро выйдет 2030 или 3130 вы тоже будете прыгать?
    Как правило, с каждой последующей версией что то усовершенствуется,- исправляются предыдущие ошибки, добавляются новые возможности... Но как показывает практика, вещи которые казалось бы должны упростить нам жизнь- делают нас более ленивыми...
    Игорь 20 Sep 2019 в 21:46 #
    Владимир, не вы ли говорили, что для вас среда Delphi 7 - проведена в бою?
    Тогда почему вы пишите на 10 ?
    Чего там такого нового?- новый RTTI или дженерики?
    10 лет писали программы без всяких там дженериков и все было нормально, но сейчас вдруг нас переклинить...

    ОтменитьДобавить комментарий