Завдання. Розширити можливості програми перевірки пошти, і додати можливість перевіряти пошту з використанням SSL (Secure Sockets Layer - рівень захищених сокетів). І так визначимося із завданнями які розширять програму перевірки пошти:
- Додати підтримку SSL для безпечного з'єднання.
- Перевірити працездатність поштової програми на 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.
Рис.1 Вибір компонента з Tool Palette
Встановимо наступні параметри:
В результаті у нас вийшла наступна форма Рис.2, Рис. 3
Мал. 2 Запущена програма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 # 40; 'Виберіть тип SSL' # 41; ;
end;
end
else
begin
IdPOP3. IOHandler. = Nil; // якщо не використовуємо SSL - встановлюємо все за замовчуванням
IdPOP3. UseTLS. = UtNoTLSSupport;
end;
end;
private
...
function CheckMail # 40; IP. TIdPOP3; User. Pass. Host. string; Port. Integer # 41 ;. String;
procedure SetupSSL;
public
Для того щоб наша процедура SetupSSL заробила в існуючому коді - потрібно додати її виклик в функцію CheckMail, яку ми написали в першій частині.
...
IP. Port. = Port; // порт
SetupSSL; // настройка SSL з'єднання
IP. Connect; // підключаємося
...
Далі запускаємо і перевіряємо працездатність.
Перевіряємо пошту на gmail.com з наступними настройками:
POP3: pop.gmail.com
Порт: 995
Мал. 4 - Перевірка пошти gmail.com
Мал. 5 - перевірка пошти ukr.net
PS. Програма перевірки пошти на Delphi тепер працює з підтримкою SSL. Тут є одна невизначеність. Програма показує загальна кількість листів, а не кількість нових. Якщо буде час опишу як перевірити кількість нових листів.
Бібліотеки libeay32.dll і ssleay32.dll можна скачати тут.
Вихідні тексти програми можна завантажити на GitHub
Схожі теми:
Добрий вечір, підкажіть будь ласка постійно виникає помилка "Помилка підключення! Could not load SSL library." Як це можна виправити?
Не виходить. Делфі лається на IdPOP3.UseTLS: = utUseImplicitTLS;
Каже незадекларований ідентифікатор: UseTLS. Що робити?
Дві dll скачав в папку з проектом.
Можливий ви використовуєте іншу версію версію компоентов, подивіться по там має бути інший належний властивість.