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

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

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

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

Lomanu4 Оффлайн

Lomanu4

Команда форума
Администратор
Сообщения
1,151
Симпатии
222
Баллы
155
VK
Расширить возможности программы проверки почты, и добавить возможность проверять почту с использованием SSL (

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

— уровень защищённых сокетов). И так определимся с заданиями которые расширят программу проверки почты:

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

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


Решение:
В

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

мы создали программу, которая проверяет почту напрямую без поддержки шифрования. В данной части мы интегрируем поддержку шифрования. Приступим к реализации.
Для того чтобы была возможность использовать SSL соединение нужно в папку с проектом скопировать два файла libeay32.dll и ssleay32.dll , в них уже реализован тот функционал который нам необходим.

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

.
Открываем проект, который создан в

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

. Открываем главную форму и перемещаем на неё компонент IdSSLIOHandlerSocketOpenSSL

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

Компонент Свойство Значение Описание
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, которая осуществляет подключение к серверу и проверяет наличие почты.
В результате у нас получилась следующая форма


Переходим в редактор кода и добавляем процедуру настройки 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.

Программа проверки почты на Delphi теперь работает с поддержкой SSL. Тут есть одна неопределенность. Программа показывает общее количество писем, а не количество новых.
Библиотеку libeay32.dll и ssleay32.dll можно скачать тут [dl]http://mirsovetov.net/wp-content/uploads/2014/03/indy_openssl096g.zip[/dl]
 
Последнее редактирование:
Вверх Снизу