Ниже приведены инструкции по созданию «отправителя электронной почты», который включает опцию отправки сообщений электронной почты и вложений непосредственно из приложения Delphi. Прежде чем мы начнем, рассмотрим альтернативу ...
Предположим, у вас есть приложение, которое работает с некоторыми данными базы данных, в том числе с другими задачами Пользователи должны экспортировать данные из вашего приложения и отправить данные по электронной почте (например, отчет об ошибке). Без подхода, описанного ниже, вы должны экспортировать данные во внешний файл, а затем использовать почтовый клиент для их отправки.
Отправка электронной почты из Delphi
Есть много способов отправить электронное письмо напрямую из Delphi, но самый простой способ - это использовать ShellExecute API. При этом электронное письмо будет отправлено с помощью установленного на компьютере почтового клиента по умолчанию. Хотя этот подход приемлем, вы не можете отправлять вложения таким способом.
Другой метод использует Microsoft Outlook и OLE для отправки электронной почты, на этот раз
с поддержка вложений, но затем необходимо использовать MS Outlook.Еще один вариант - использовать встроенную поддержку Delphi для Windows Simple Mail API. Это работает, только если у пользователя установлена MAPI-совместимая программа электронной почты.
Техника, которую мы обсуждаем здесь, использует Инди Компоненты (Internet Direct) - отличный пакет интернет-компонентов, состоящий из популярных интернет-протоколов, написанных на Delphi и основанных на блокирующих сокетах.
Метод TIdSMTP (Indy)
Отправка (или получение) сообщений электронной почты с помощью компонентов Indy (которые поставляются с Delphi 6+) так же просты, как удаление одного или двух компонентов в форме, установка некоторых свойств и «нажатие кнопки».
Чтобы отправить электронное письмо с вложениями из Delphi с помощью Indy, нам понадобятся два компонента. Во-первых, TIdSMTOP используется для подключения и связи (отправки почты) с SMTP-сервером. Во-вторых, TIdMessage обрабатывает хранение и кодирование сообщений.
Когда сообщение построено (когда TIdMessage заполнены данными), электронная почта доставляется на SMTP-сервер с использованием TIdSMTP.
Исходный код отправителя электронной почты
Я создал простой проект отправителя почты, который я объясню ниже. Вы можете скачать полный исходный код здесь.
Замечания: Эта ссылка является прямой загрузкой в ZIP-файл для проекта. Вы должны быть в состоянии открыть его без проблем, но если вы не можете, используйте 7-Zip чтобы открыть архив, чтобы вы могли извлечь файлы проекта (которые хранятся в папке с именем Отправить письмо).
Как вы можете видеть на скриншоте времени разработки, чтобы отправить электронное письмо, используя TIdSMTP компонент, по крайней мере, необходимо указать почтовый сервер SMTP (хост). Само сообщение нуждается в заполнении регулярных частей электронной почты, таких как Из, к, Предмет, и т.д.
Вот код, который обрабатывает отправку одного письма с вложением:
процедура TMailerForm.btnSendMailClick (Отправитель: TObject); начать StatusMemo. Ясно; // настройка SMTP SMTP.Host: = ledHost. Текст; SMTP.Port: = 25; // настройка почтового сообщения MailMessage. Из. Адрес: = ledFrom. Текст; MailMessage. Получатели. EMailAddresses: = ledTo. Текст + ',' + ledCC.Text; MailMessage. Subject: = ledSubject. Текст; MailMessage. Тело. Текст: = Тело. Текст; если FileExists (ledAttachment. Текст) тогда TIdAttachment. Создать (MailMessage. MessageParts, ledAttachment. Текст); //Отправить письмопытатьсяпытаться SMTP.Connect (1000); SMTP.Send (MailMessage); Кромена E: Исключение делают. StatusMemo. Линии. Вставить (0, «ОШИБКА:» + E.Message); конец; наконецесли SMTP.Connected тогда SMTP.Disconnect; конец; конец; (* btnSendMail Нажмите *)
Замечания: Внутри исходного кода вы найдете две дополнительные процедуры, которые используются для создания значений хозяин, Из, и к Постоянно редактируйте поля, используя INI-файл для хранения.