Delphi. Как отправлять Email из VCL приложения?

Всем привет. В данном посте посмотрим как отправлять Email через SMTP сервер Яндекса. Для остальных SMTP серверов – можно сделать по аналогии, заменив порты и др. сетевые реквизиты. Яндекс и многие другие почтовики работают через SSL, поэтому нам понадобится дополнительный компонент, который появился только в Indy 10 – TIdSSLIOHandlerSocketOpenSSL1

Подготовительная работа

Итак, для работы – нам понадобится Indy 10 и библиотеки SSL.

Indy10_5303 

Ссылка на официальный сайт  Indy, где можно скачать саму Indy и SSL библиотеки 

Есть программа Win32OpenSSL – она устанавливает библиотеки в каталоги Windows.

Как узнать свою версию Indy?

Положите на форму любой компонент Indy, например, IdSMTP и напишите следующий код, например, на кнопке…

Я свою версию Indy не менял, у меня та, что поставлялась с Delphi XE7 10.6.0.5169

Как установить Indy (если необходимо)?

Перед установкой необходимо удалить предыдущую версию Indy. Для этого идем по меню Component-Install Packages и удалем все со словом Indy.
Следующим шагом распаковываем архив скачанный с сайта Indy
Теперь необходимо добавить пути Library path. Для этого переходим по пункту Tools-Environment Options-Library и добавляем Library path пути к следующим папкам

  1. System
  2. Core
  3. Protocols
  4. Super Core

Теперь открываем и компилируем пакеты в следующем порядке:

  1. пакет IndySystemX0.dpk (где X – это версия Delphi) (папка System)
  2. пакет IndyCoreX0.dpk (где X- это версия Delphi) (папка Core)
  3. пакет IndyProtocolsX0.dpk (где X – это ваша версия Delphi) (папка Protocols).
  4. пакет IndySuperCore70.dpk  (для Delphi 7) (папка Super Core)

Далее открываем и устанавливаем:

  1. пакет dclIndyCoreX0.dpk (папка Core)
  2. пакет dclIndySuperCore70.dpk   (папка Super Core) только для Delphi 7
  3. пакет dclIndyProtocolsX0.dpk (папка Protocols)

Установка Indy завершена.

Где разместить DLL?

В принципе, здесь стандартно, об этом я уже писал в статье про DLL

-В каталоге из которого запускается программа

-В каталоге Windows

-В системном каталоге Windows

-В каталогах, включенных в переменную окружения PATH

Если Вы используете Win32OpenSSl, тогда инсталлятор положит все куда нужно самостоятельно.

Какие версии библиотеки использовать?

Я пробовал с разными, работало не со всеми. На момент написания статьи последней версией библиотеки SSL была

openssl-1.0.2p-i386-win32

openssl-1.0.2p-i386-win32openssl-1.0.2p-x64_86-win64

Собственно код для отправки E-mail

Здесь все компоненты создаются и удаляются динамически. Я тестил на Яндекс ящике. В принципе, для других ящиков – просто поменяйте порт, если нужно, ну и логин с паролем.

Комментарий
{SMTP.UserName должно совпадать с msg.From.Address, иначе Яндекс забъет тревогу))) }

Ещё один код со StackOverFlow

 

Источники по данной теме, которые мне помогли

Блог программиста-самоучки

Ветка форума Cyber-Forum

Блог Random Thoughts…

Win32OpenSSL

This entry was posted in Delphi, Delphi и сети, Indy, Без рубрики. Bookmark the permalink.