ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
Delphi: Функция для отправки письма с аттачментом c помощью winsock |

13.10.2007, 10:18
|
|
Banned
Регистрация: 11.10.2007
Сообщений: 54
Провел на форуме: 86268
Репутация:
84
|
|
Delphi: Функция для отправки письма с аттачментом c помощью winsock
Нужна функция которая отправляет письмо с аттачментом на e-mail, минуя любые промежуточные сервера.
Что-то вроде : function Send(email,FileName:String):boolean;
|
|
|

13.10.2007, 10:46
|
|
Участник форума
Регистрация: 12.10.2006
Сообщений: 158
Провел на форуме: 668286
Репутация:
187
|
|
ну я не очень хорошо вдельфи разбираюсь, но вот какой-то исходник есть
Код:
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.
может это оно!? =\
|
|
|

13.10.2007, 12:09
|
|
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме: 1892597
Репутация:
836
|
|
"отправка данных на Delphi то smtp!"
https://forum.antichat.ru/thread33820.html
почему никто не юзает поиск?!?!?
писец... давайте создавать кучу однотипных топиков и ждать пока в них кинут ссылку на соседний топик, либо откопипастят код с того же соседнего топика...
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
|
|
|

13.10.2007, 12:32
|
|
Banned
Регистрация: 11.10.2007
Сообщений: 54
Провел на форуме: 86268
Репутация:
84
|
|
Ни здесь ни в той теме которую ты показал нету ничего про аттчмент.
|
|
|

13.10.2007, 22:55
|
|
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме: 1941233
Репутация:
2726
|
|
Тема про аттачмент есть в rfc. Читай rfc. Аттачмент там отправляется как multi-part/bounded data, как и по HTTP.
2616 (HTTP)
минуя любые промежуточные сервера.
чтобы миновать промежуточные сервера запрашивай mx-запись сервера (то, что после собаки "@") у DNS сервера через DnsQuery_A и посылай через неё.
Айпи должен быть не в блеке, статический, короче не диалап левый.
|
|
|

13.10.2007, 23:47
|
|
Постоянный
Регистрация: 05.01.2007
Сообщений: 508
Провел на форуме: 2360904
Репутация:
1393
|
|
Я тоже свой исходник на ачате гдето выкладывал, поиск рулит!
|
|
|

14.10.2007, 07:48
|
|
Banned
Регистрация: 11.10.2007
Сообщений: 54
Провел на форуме: 86268
Репутация:
84
|
|
Re:Kez
То есть ты хочешь сказать SMTP сервер не будет функционировать на на ip диалапного провайдера.
|
|
|

15.10.2007, 00:46
|
|
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме: 2187381
Репутация:
518
|
|
Smtp-server конечно можно поставить.... прописать MX подождать сутки и пользуйся! Только вот в толк не возьму при чем тут сервер, когда ты спрашиваешь о клиенте, который в соответствии с MIME 64 должен аттачить файл.
А твой клиент должен работать с сервером на котором происходит авторизация.... либо с серверами поддерживающими анонимную авторизацию, но данная функция отключена почти у всех..... никому не хочется платить за spam трафик !
Последний раз редактировалось Delimiter; 15.10.2007 в 00:49..
|
|
|

15.10.2007, 08:13
|
|
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме: 1941233
Репутация:
2726
|
|
То есть ты хочешь сказать SMTP сервер не будет функционировать на на ip диалапного провайдера.
Какой сервер? Тебя забанят просто при попытке послать письмо через mx-сервер напрямую, если айпи у тебя диалапный. Через MX-сервера вообще по нормальному должны посылать другие почтовые сервера.
А, да, аватара ниче так. Что ещё сказать...
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|