• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Delphi — проверка почты

Lomanu4 Оффлайн

Lomanu4

Команда форума
Администратор
Сообщения
1,151
Симпатии
222
Баллы
155
VK
  1. Проверка почты на наличие сообщений;
  2. Возможность задания периода проверки почты;
  3. Вывод уведомлений при наличии каких либо сообщений;
Инструментарий: Delphi, компоненты INDY
Раз определились с планом действий — приступим к следующему этапу — созданию. Создаем новый проект, и размещаем на форме компонент idPOP3, который находиться на закладке IndyClients.

Для того чтобы проверить почту нам необходимо передать компоненту idPOP3некоторые параметры для подключения, а именно:

UserName – адрес электронной почты в формате (xxx@xxx.xx)
Password – пароль к данному почтовому ящику
Host – POP3 сервер (pop.mail.ru; pop3.ukr.net)
Port – порт (по умолчанию 110)

Размещаем на форме компонент GroupBox из вкладки Standard – для группирования полей. Для того чтобы программа была более «гибкой» — поместим 4 компонента Edit иLabel, они находятся на закладке Standard.
Компонент Свойство Значение Описание
Form1 Name MainForm
GroupBox1 Caption Настройки ящика
Name SettingsGroupBox
Label1 Caption Адрес
Name AdressLabel
Label2 Caption Пароль
Name PassLabel
Label3 Caption POP3 сервер
Name Pop3Label
Label4 Caption Порт
Name PortLabel
Edit1 Text Адрес
Name AdressEdit
Edit2 Text Пароль
Name PassEdit
PasswordChar *
Edit3 Text POP3 сервер
Name Pop3Edit
Edit4 Text Порт
Name PortEdit
NumbersOnly True Можно вводить только числа
idPop31 Name idPop31

Что касается 2-го задания. Нам необходимо еще разместить на форме компонент Timer, который находиться на закладке System. Для задания интервала проверки, нам необходимо добавить на форму поле ввода Edit (панель Standard), компонент Memo для вывода системных сообщений и кнопку (Button на панели Standard) для подтверждения введенной информации. Установим для них следующие свойства
Компонент Свойство Значение
Button1 Caption Установить
Name OkBtn
Memo1 Lines
Name ResultMemo
Edit5 Text
Name IntervalEdit
NumbersOnly true
Timer1 Enabled false
Name CheckTimer

Напишем функцию присвоения значений таймера, его активацию и вывод соответствующих сообщений в ResultMemo.
Код:
function TMainForm.StartTimer(T:TTimer;int:Integer):string;
var
sec:Integer; // объявляем переменную для записи в неё количество мсек.
begin
  T.Enabled:=false; //остановка таймера
  sec:=int*60000; // определяем интервал проверки
  T.Interval:=sec; // задаём интервал проверки
  T.Enabled:=true; //запускаем таймера
  Result:='Почта будет проверена через '+IntToStr(int)+' мин.'; // передача обратно оповещения
end;
Обьявим данную функцию в приватной секции главной формы:
Код:
private
  { Private declarations }
  function StartTimer(T:TTimer;int:Integer):string;
Данная функция задает настройки таймера и возвращает строку с сообщением, через какой период будет проверена почта.

Дальше создадим код для события onClick кнопки OkButton (для того чтобы создать данное событие необходимо два раза кликнуть на кнопку, или перейти в Object Inspector, открыть закладку Events, и два раза кликнуть по пустому полю возле названия onClick): После создания события автоматически сгенерируется следующий код:
Код:
procedure TMainForm.OkBtnClick(Sender: TObject);
begin
end;
Используем ранее написанную функцию, для этого передадим необходимые параметры:
Код:
procedure TMainForm.OkBtnClick(Sender: TObject);
begin
  ResultMemo.Lines.Add(StartTimer(CheckTimer,StrToInt(IntervalEdit.Text)));
end;
Рассмотрим более детально: ResultMemo.Lines.Add(); — добавляем запись в ResultMemo которую возвращает написанная нами процедура
Код:
StartTimer(CheckTimer,StrToInt(IntervalEdit.Text)).
Всё очень просто мы останавливаем таймер, в том случае если он запущен, определяем время его срабатывания, записываем данное время в интервал и запускаем таймер.
Теперь перейдём непосредственно к таймеру. Два раза кликаем левой кнопкой мыши на компонент Timer, после чего вы перейдёте в редактор кода, при этом автоматически генерируется обработчик события OnTimer:
Код:
procedure TMainForm.CheckTimerTimer(Sender: TObject);
begin
end;
Дальше реализуем процедуру для получения писем:
function TMainForm.CheckMail(IP:TIdPOP3;User,Pass,Host:string;Port:Integer):String;
var
NumOfMsgs:Integer; // Количество писем
begin
  try
    IP.Username:=User; // адрес электронной почты в формате (xxx@xxx.xx)
    IP.Password:=Pass; // пароль к данному почтовому ящику
    IP.Host:=Host; // POP3 сервер (pop.mail.ru; pop3.ukr.net)
    IP.Port:=Port; // порт
    IP.Connect; // подключаемся
    if IP.Connected then // если подключение прошло успешно
    begin
      // записываем в NumOfMsgs количество писем
      NumOfMsgs := IP.CheckMessages;
      // Возвращаем результат
      Result:='Подключение прошло успешно!'+#13#10;
      Result:=Result+'У вас '+IntToStr(NumOfMsgs)+' сообщений';
    end
  except // Если произошла ошибка- возвращаем текст ошибки
    on E:Exception do Result:='Ошибка подключения! '+E.Message;
  end;
  IP.Disconnect; // Отключаемся
end;
И объявим ее в приватной секции главной формы:
Код:
private
  ...
  function CheckMail(IP:TIdPOP3;User,Pass,Host:string;Port:Integer):String;
Переходим в обработчик события OnTimer и компонента CheckTimer и пишем следующий код для того чтобы почта проверялась при активации таймера:
Код:
procedure TMainForm.CheckTimerTimer(Sender: TObject);
begin
  ResultMemo.Lines.add(CheckMail(IdPOP31,AdressEdit.Text,PassEdit.Text,Pop3Edit.Text,StrToInt(PortEdit.Text)));
end;
Теперь посмотрим что же получилось, заполняем все поля (настройки для получения почты можно взять на почтовых серверах, где у вас зарегистрирован почтовый ящик)
 
Вверх Снизу