ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Delphi: Функция для отправки письма с аттачментом c помощью winsock
  #1  
Старый 13.10.2007, 10:18
o_OBallers
Banned
Регистрация: 11.10.2007
Сообщений: 54
Провел на форуме:
86268

Репутация: 84
По умолчанию Delphi: Функция для отправки письма с аттачментом c помощью winsock

Нужна функция которая отправляет письмо с аттачментом на e-mail, минуя любые промежуточные сервера.
Что-то вроде : function Send(email,FileName:String):boolean;
 
Ответить с цитированием

  #2  
Старый 13.10.2007, 10:46
kair
Участник форума
Регистрация: 12.10.2006
Сообщений: 158
Провел на форуме:
668286

Репутация: 187
Отправить сообщение для kair с помощью ICQ
По умолчанию

ну я не очень хорошо вдельфи разбираюсь, но вот какой-то исходник есть

Код:
program MailSend; 

{$APPTYPE CONSOLE} 

uses
  windows,
  WinSock;

Function SendMail(Smtp: PChar; Port: dword; From, Dest, Data: PChar): boolean;
var 
FSocket: integer; 
HostEnt: PHostEnt;
SockAddrIn: TSockAddrIn; 
dBuff: PChar; 
dSize: dword; 
Str: array [0..255] of Char; 

function Success(): boolean; 
var 
Bytes: dword; 
RBuff: array [0..255] of Char; 
begin 
Result := false; 
Bytes := recv(FSocket, RBuff, 255, 0); 
if (Bytes = 0) or (Bytes = SOCKET_ERROR) then Exit; 
RBuff[3] := #0; 
if lstrcmp(RBuff, '220') = 0 then Result := true else 
if lstrcmp(RBuff, '250') = 0 then Result := true else 
if lstrcmp(RBuff, '354') = 0 then Result := true; 
end; 

begin 
Result := false; 
FSocket := socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); 
SockAddrIn.sin_family := AF_INET; 
SockAddrIn.sin_port := htons(Port); 
SockAddrIn.sin_addr.s_addr := inet_addr(Smtp); 
if SockAddrIn.sin_addr.s_addr = INADDR_NONE then 
begin 
HostEnt := gethostbyname(Smtp); 
if HostEnt = nil then 
begin 
closesocket(FSocket); 
Exit; 
end; 
SockAddrIn.sin_addr.s_addr := PLongint(HostEnt^.h_addr_list^)^; 
end; 
if Connect(FSocket, SockAddrIn, SizeOf(SockAddrIn)) <> -1 then 
begin 
if Success then 
begin 
lstrcpy(Str, PChar('HELO ' + Smtp + #13#10#0)); 
send(FSocket, Str, lstrlen(Str), 0); 
if Success then 
begin 
lstrcpy(Str, PChar('MAIL FROM: ' + From + #13#10#0)); 
send(FSocket, Str, lstrlen(Str), 0); 
if Success then 
begin 
lstrcpy(Str, PChar('RCPT TO: ' + Dest + #13#10#0)); 
send(FSocket, Str, lstrlen(Str), 0); 
if Success then 
begin 
lstrcpy(Str, 'DATA'#13#10#0); 
send(FSocket, Str, lstrlen(Str), 0); 
if Success then 
begin 
dSize := lstrlen(Data); 
GetMem(dBuff, dSize + 6); 
lstrcpy(dBuff, Data); 
lstrcat(dBuff, #13#10'.'#13#10#0); 
send(FSocket, dBuff^, dSize + 6, 0); 
FreeMem(dBuff); 
if Success then 
begin 
lstrcpy(Str, 'QUIT'#13#10#0); 
send(FSocket, Str, lstrlen(Str), 0); 
Result := true; 
end; 
end; 
end; 
end; 
end; 
end; 
end; 
closesocket(FSocket); 
end; 

var 
WSAData: TWSAData; 
Mail, Data: string; 

begin 
Write('Send Mail to: '); 
ReadLn(Mail); 
Write('Enter Mail Text: '); 
ReadLn(Data); 
WSAStartup(257, WSAData); 
if SendMail('smtp.mail.ru', 25, 
'yandex@mail.ru',
PChar(Mail), PChar(Data)) then 
WriteLn('Mail sended') else WriteLn('Error on sending mail');
ReadLn;
WSACleanup();
end.
может это оно!? =\
 
Ответить с цитированием

  #3  
Старый 13.10.2007, 12:09
W!z@rD
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме:
1892597

Репутация: 836


Отправить сообщение для W!z@rD с помощью ICQ
По умолчанию

"отправка данных на Delphi то smtp!"
https://forum.antichat.ru/thread33820.html

почему никто не юзает поиск?!?!?
писец... давайте создавать кучу однотипных топиков и ждать пока в них кинут ссылку на соседний топик, либо откопипастят код с того же соседнего топика...
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
 
Ответить с цитированием

  #4  
Старый 13.10.2007, 12:32
o_OBallers
Banned
Регистрация: 11.10.2007
Сообщений: 54
Провел на форуме:
86268

Репутация: 84
По умолчанию

Ни здесь ни в той теме которую ты показал нету ничего про аттчмент.
 
Ответить с цитированием

  #5  
Старый 13.10.2007, 22:55
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


По умолчанию

Тема про аттачмент есть в rfc. Читай rfc. Аттачмент там отправляется как multi-part/bounded data, как и по HTTP.
2616 (HTTP)
Цитата:
минуя любые промежуточные сервера.
чтобы миновать промежуточные сервера запрашивай mx-запись сервера (то, что после собаки "@") у DNS сервера через DnsQuery_A и посылай через неё.
Айпи должен быть не в блеке, статический, короче не диалап левый.
 
Ответить с цитированием

  #6  
Старый 13.10.2007, 23:47
z01b
Постоянный
Регистрация: 05.01.2007
Сообщений: 508
Провел на форуме:
2360904

Репутация: 1393


По умолчанию

Я тоже свой исходник на ачате гдето выкладывал, поиск рулит!
 
Ответить с цитированием

Re:Kez
  #7  
Старый 14.10.2007, 07:48
o_OBallers
Banned
Регистрация: 11.10.2007
Сообщений: 54
Провел на форуме:
86268

Репутация: 84
По умолчанию Re:Kez

То есть ты хочешь сказать SMTP сервер не будет функционировать на на ip диалапного провайдера.
 
Ответить с цитированием

  #8  
Старый 15.10.2007, 00:46
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме:
2187381

Репутация: 518
По умолчанию

Smtp-server конечно можно поставить.... прописать MX подождать сутки и пользуйся! Только вот в толк не возьму при чем тут сервер, когда ты спрашиваешь о клиенте, который в соответствии с MIME 64 должен аттачить файл.
А твой клиент должен работать с сервером на котором происходит авторизация.... либо с серверами поддерживающими анонимную авторизацию, но данная функция отключена почти у всех..... никому не хочется платить за spam трафик !

Последний раз редактировалось Delimiter; 15.10.2007 в 00:49..
 
Ответить с цитированием

  #9  
Старый 15.10.2007, 08:13
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


По умолчанию

Цитата:
То есть ты хочешь сказать SMTP сервер не будет функционировать на на ip диалапного провайдера.
Какой сервер? Тебя забанят просто при попытке послать письмо через mx-сервер напрямую, если айпи у тебя диалапный. Через MX-сервера вообще по нормальному должны посылать другие почтовые сервера.
А, да, аватара ниче так. Что ещё сказать...
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
МикроДжоинер для начинающих ReanimatoR Статьи 23 02.01.2010 15:07
Плагины для Total Commander _GaLs_ Soft - Windows 5 10.03.2007 20:07
Программы для работы с железом. Часть 2 – материнские платы _GaLs_ Аппаратное обеспечение 0 19.11.2006 12:57
Сетевой сканер Nmap. Руководство пользователя foreva Чужие Статьи 1 08.02.2005 16:36



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ