Как отправить письмо скрытно от пользователя по протоколу SMTPDelphi , Интернет и Сети , E-mailКак отправить письмо скрытно от пользователя по протоколу SMTPАвтор: BadBoy { smtp - ip адрес smtp сервера port - порт smtp сервера, по умолчанию 25 from - адрес отправителя dest - адрес получателя subject - тема письма body - текст писма Возвращает True если письмо было успешно отправленно... } function mail(smtp: string; port: integer; from, dest, subject, body: string): bool; const cl = #13#10; var WSAData: TWSAData; Host: TSockAddrIn; Sock: TSocket; res: Integer; buff: array[1..255] of Char; { отправляем данные через сокет } procedure senddata(str: string); var i: integer; begin for i := 1 to Length(str) do if send(Sock, str[i], 1, 0) = SOCKET_ERROR then exit; end; { получаем ответ от команды } function recvdata(accept: string): bool; var buff: array[1..255] of Char; begin res := recv(Sock, buff, SizeOf(buff), 0); Result := (Res = SOCKET_ERROR) or (Copy(buff, 1, 3) = accept); end; begin try result := false; { инициализация сокета } WSAStartUp(257, WSAData); Sock := socket(AF_INET, SOCK_STREAM, IPPROTO_IP); if Sock = INVALID_SOCKET then Exit; { устанавливаем хост и порт сервера } res := inet_addr(PChar(smtp)); if res <= 0 then exit; Host.sin_family := AF_INET; Host.sin_port := htons(port); Host.sin_addr.S_addr := res; { подключаемся к серверу } if connect(Sock, Host, SizeOf(Host)) > 0 then Exit; { приветствие сервера } if not recvdata('220') then Exit; { EHLO } senddata('EHLO' + cl); if not recvdata('250') then Exit; { MAIL FROM: } senddata('MAIL FROM:' + from + cl); if not recvdata('250') then Exit; { RCPT TO: } senddata('RCPT TO:' + dest + cl); if not recvdata('250') then Exit; { DATA } senddata('DATA' + cl); if not recvdata('354') then Exit; { отправляем текст сообщения } senddata('Subject:' + subject + cl + cl + body + cl + '.'); if not recvdata('250') then Exit; { отключаемся от сервера } senddata('QUIT' + cl); result := true; finally { убиваем сокет } closesocket(sock); WSACleanup; end; end; { mail('127.0.0.1',25,'bboy-ne@yandex.ru' ,'admin@company.mail', 'subj', 'body text'); p.s.: Тестировалась на e-mail сервере Alt-N Daemond Pro for Windows v6.5.1... Функция делалась на основе статьи "Простой протокол передачи почты (SMTP)" } Программный код на языке Delphi для отправки электронной почты с использованием протокола SMTP. Он написан на Паскале и использует Windows Sockets API (Winsock) для установления соединения с сервером SMTP. Вот разбивка кода:
Процедура Чтобы использовать этот код, просто вызовите функцию
Обратите внимание, что этот код предназначен только для демонстрационных целей и может не работать с любым сервером SMTP или провайдером электронной почты. Вам может потребоваться модификация кода для адаптации к конкретным требованиям сервера или ошибкам. Также помните, что отправка электронных писем программно может быть сложным процессом,涉ывающим вопросы аутентификации, шифрования и фильтрации спама. Этот код не обрабатывает эти аспекты, поэтому используйте его ответственно и с осторожностью. Автор BadBoy описывает функцию для отправки электронного письма по протоколу SMTP скрытно от пользователя. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |