Проверяем письма на Вашем E-mail

Cети и Интернет   14 сентября 2010  Автор статьи: admin 

Ну вот, как и обещал. Выкладываю статью, в которой мы с Вами разберем чтение почты с вашего почтового сервера. Создадим новый проект.  На форму переместим невизуальный компонент idPOP3. Найти такой компонент можно во вкладке IndyClients:

Теперь рассмотрим некоторые необходимые параметры этого компонента:

Username – адрес электронной почты в формате loginxxxx@xxxxx.xx

Password – пароль к почтовому ящику

Host – POP3 сервер. Вот одни из самых распространенных: (pop.mail.ru; pop.list.ru; pop.bk.ru; pop.inbox.ru; pop.yandex.ru; pop3.ukr.net; pop.gmail.com; pop3.rambler.ru). Если Вы не нашли свой почтовик в списке, то выясните его POP3 сервер на сайте почтовика или через поисковую систему.

Port – порт (по умолчанию 110). Порт также желательно выяснить у почтовика или найти через поисковую систему.

Создадим форму, похожую на эту:

Edit1 – Адрес; Edit2 – Пароль; Edit3 – Сервер; Edit4 – Порт; Tmr1 – Таймер проверки; Memo1 – Лог справа; Btn1 – кнопка «Применить», SpinEdit1 – Проверять каждые x мин. Еще у SpinEdit1.minvalue выставьте 1, а SpinEdit1.minvalue выставьте по своему усмотрению (это максимальное кол-во минут ожидания до проверки).

Создав форму, создадим обработчик события кнопки «Применить». По идее, при нажатии на кнопку, должно установиться время проверки (параметр Interval таймера tmr1 из SpinEdit1.value) и запуститься таймер tmr1. Таким образом получение кол-ва писем будет через  »SpinEdit1.value» минут.

Добавим этот код в обработчик OnClick компонента Btn1 (кнопки «применить»):Исходный код

procedure TForm1.btn1Click(Sender: TObject);
begin
 tmr1.Enabled:=False;
 tmr1.Interval:=spinedit1.Value*60000;
 tmr1.Enabled:=True;
 Memo1.Lines.Add('Почта будет проверена через '
+inttostr(spinedit1.Value)+' мин.');
end;

Думаю комментариев здесь не нужно – все и так очень просто.

Теперь создадим обработчик OnTimer для таймера tmr1:Исходный код

procedure TForm1.tmr1Timer(Sender: TObject);
var
  msgs: Integer; // Сюда мы запишем количество писем
begin
  try
    IdPOP31.Username := Edit1.Text; 
// адрес электронной почты (например vasyapupkin@mail.ru)
    IdPOP31.Password := Edit2.Text; // пароль
    IdPOP31.Host := Edit3.Text; // POP3 сервер
    IdPOP31.Port := StrToInt(Edit4.Text); // порт
    IdPOP31.Connect; // подключаемся к почтовому серверу
    if IdPOP31.Connected then // если подключение прошло успешно
    begin
      msgs := IdPOP31.CheckMessages; // записываем количество писем
      Memo1.Lines.Add('Подключение к ' + Edit1.Text + ' успешно');
      Memo1.Lines.Add('У Вас ' + IntToStr(msgs) + ' сообщений');
    end;
  except // Если произошла ошибка, то выведем её в Memo1
    on E: Exception do
      Memo1.Lines.Add('Ошибка подключения к почтовому серверу! ' 
+ E.Message);
  end;
  IdPOP31.Disconnect; // Отключаемся
end;

Ну вот и все! Тепер прокомпилируем программу, запустим, введем все данные и нажмем кнопку «Применить». Через указанное кол-во минут мы увидим результат нашей программы. У меня получилось так:

Выкладываю мою программу с исходниками Delphi 7. Надеюсь, что у Вас все получилось! Конечно назвать это почтовым клиентом нельзя, но вот для проверки новых писем такую программу использовать удобно. В следующем уроке мы научимся читать сами письма.

Если Вам не трудно, то оставьте комментарий, расскажите о вашем результате. Если возникла проблема, то я и другие пользователи постараемся ее решить.
[poll id=»2″]

  • Саша Вишневский

    Где кнопка скачать исходник?????

Научиться программировать

  • на Delphi

  • на Java

  • на C++