Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
В D5 Вы можете попробовать использовать компоненты TNMSMTP и TNMPOP3,
в D6 и Kylix компоненты от NetMasters заменены компонентами Indy.
Алгоритм простой (для сторонних компонентов он принципиально ничем не отличается):
Структура PostMessage:
(*) - помечены обязательные поля. С остальным не сложно разобраться самому.
Также это можно сделать при помощи MAPI.
Т.е. письмо будет отправлено средствами _почтовой_программы_по_умолчанию_ - со всеми недостатками :) (например письмо будет помещено в папку "отправленные"). Зато без всяких там компонент и просто :)
Hиже готовая функция, в которой:
UsesMAPI; ... function
SendMail(const
From, Dest, Subject, Text, FileName: PChar; Outlook: boolean):Integer; var
Message
: TMapiMessage; Recipient, Sender: TMapiRecipDesc; File_Attachment: TMapiFileDesc; function
MakeMessage: TMapiMessage; begin
FillChar(Sender, SizeOf(Sender), 0); Sender.ulRecipClass := MAPI_ORIG; Sender.lpszAddress := From; FillChar(Recipient, SizeOf(Recipient), 0); Recipient.ulRecipClass := MAPI_TO; Recipient.lpszAddress := Dest; FillChar(File_Attachment, SizeOf(File_Attachment), 0); File_Attachment.nPosition := Cardinal(-1); File_Attachment.lpszPathName := FileName; FillChar(Result, SizeOf(Result), 0); with
Message
do
begin
lpszSubject := Subject; lpszNoteText := Text; lpOriginator := @Sender; nRecipCount := 1; lpRecips := @Recipient; nFileCount := 1; lpFiles := @File_Attachment; end
; end
; var
SM: TFNMapiSendMail; MAPIModule: HModule; MAPI_FLAG: Cardinal; begin
if
Outlook then
MAPI_FLAG:=MAPI_DIALOG else
MAPI_FLAG:=0; MAPIModule := LoadLibrary(PChar(MAPIDLL)); if
MAPIModule = 0 then
Result := -1 else
try
@SM := GetProcAddress(MAPIModule, 'MAPISendMail'); if
@SM <> nil
then
begin
MakeMessage; Result := SM(0, Application.Handle, Message
, MAPI_FLAG, 0); end
else
Result := 1; finally
FreeLibrary(MAPIModule); end
; end
;