Delphi — проверка почты (Часть 2)

Задача: Расширить возможности программы проверки почты, и добавить возможность проверять почту с использованием SSL (Secure Sockets Layer — уровень защищённых сокетов). И так определимся с заданиями которые расширят программу проверки почты:

  1. Добавить поддержку SSL для безопасного соединения.
  2. Проверить работоспособность почтовой программы на gmail.com (там используется SSL) и ukr.net (Без шифрования)

Инструментарий: Delphi XE, компоненты INDY v10, Библиотеки libeay32.dll и ssleay32.dll
Решение:
Предыдущая часть:
Проверка почты средствами Delphi — часть 1
В первой части мы создали программу, которая проверяет почту напрямую без поддержки шифрования. В данной части мы интегрируем поддержку шифрования. Приступим к реализации.

Для того чтобы была возможность использовать SSL соединение нужно в папку с проектом скопировать два файла libeay32.dll и ssleay32.dll , в них уже реализован тот функционал который нам необходим. Библиотеки libeay32.dll и ssleay32.dll можно скачать тут.
Открываем проект, который создан в первой части. Открываем главную форму и перемещаем на неё компонент IdSSLIOHandlerSocketOpenSSL (Рис. 1). Также перемести на форму еще несколько дополнительные элементов управления и настроим их в соответствии с табл. 1.

IdSSLIOHandlerSocketOpenSSL

Рис.1 Выбор компонента с Tool Palette

Установим следующие параметры:

Табл. 1

Компонент  Свойство Значение  Описание
IdSSLIOHandlerSocketOpenSSL Name SSLHandler
CheckBox Name chkUseSSL Если переключатель включен – используем SSL соединение
Caption Использовать SSL
ComboBox Name cbSSLType В нем будет сохраняться тип SSL подключения sslvTLSv1 , sslvSSLv2…
Items sslvSSLv2
sslvSSLv23
sslvSSLv3
sslvTLSv1
ItemIndex 0
Button Name btnTest Кнопка для мгновенной проверки почты, исключительно для тестирования, запускает процедуру CheckMail, которая осуществляет подключение к серверу и проверяет   наличие почты.

В результате у нас получилась следующая форма Рис.2, Рис. 3

Рис. 3 Программа в редакторе форм

Рис. 3 Программа в редакторе форм

Рис. 2 Запущенная программа
Рис. 2 Запущенная программа

Переходим в редактор кода и добавляем процедуру настройки SSL соединения, назовём ее SetupSSL. Код реализации приведен ниже:

procedure TfrmMain.SetupSSL;
begin
  if chkUseSSL.Checked then  //если включена опция использовать SSL
  begin
    IdPOP3.IOHandler := SSLHandler; //устанавливаем SSL Handler для IdPOP3
    IdPOP3.UseTLS := utUseImplicitTLS;  //использовать неявный TSL
    //Устанавливаем тип SSL
    case cbSSLType.ItemIndex of
      0: SSLHandler.SSLOptions.Method := sslvSSLv2;
      1: SSLHandler.SSLOptions.Method := sslvSSLv23;
      2: SSLHandler.SSLOptions.Method := sslvSSLv3;
      3: SSLHandler.SSLOptions.Method := sslvTLSv1;
    else
      raise Exception.Create('Выберите тип SSL');
    end;
  end
  else
  begin
    IdPOP3.IOHandler := nil; //если не используем SSL - устанавливаем все по умолчанию
    IdPOP3.UseTLS := utNoTLSSupport;
  end;
end;

Добавляем объявление процедуры в секцию private класса главной формы:

private

  function CheckMail(IP: TIdPOP3; User, Pass, Host: string;  Port: Integer): String;
  procedure SetupSSL;
public

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


    IP.Port:=Port; // порт
    SetupSSL;  // настройка SSL соединения
    IP.Connect; // подключаемся

Дальше запускаем и проверяем работоспособность.
Проверяем почту на gmail.com со следующими настройками:

POP3: pop.gmail.com
Порт: 995

А также для аккаунта gmail.com должна быть включена возможность получать почту с помощью сторонних программ через POP3. На Рис.4,Рис.5 представлена работоспособность программы.

Рис. 4 – Проверка почты gmail.com

Рис. 4 – Проверка почты gmail.com


Рис. 5 – проверка почты ukr.net

Рис. 5 – проверка почты ukr.net

PS: Программа проверки почты на Delphi теперь работает с поддержкой SSL. Тут есть одна неопределенность. Программа показывает общее количество писем, а не количество новых. Если будет время опишу как проверить количество новых писем.
Библиотеки libeay32.dll и ssleay32.dll можно скачать тут.
Исходники программы можно скачать на GitHub

Продолжение в 3-й части: Проверка почты средствами Delphi — часть 3

Delphi — проверка почты (Часть 2): 4 комментария

  1. Павел Лобода

    Не выходит. Делфи ругается на IdPOP3.UseTLS := utUseImplicitTLS;
    Говорит незадекларированный идентификатор: UseTLS. Что делать?
    Две dll скачал в папку с проектом.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *