Доброго времени суток! Привожу часть кода После коннекта: invoke recv,hsock,addr tempBuffer,BUFFER_SIZE,0 invoke MessageBox,0,addr tempBuffer,addr tempBuffer,0 - показывает ответ № 220 invoke Mys,SADD("HELO mail.ru",0) invoke recv,hsock,addr tempBuffer,BUFFER_SIZE,0 invoke MessageBox,0,addr tempBuffer,addr tempBuffer,0 - через некоторое время ошибка TimeOut invoke Mys,SADD("MAIL FROM:<my@mail.ru>",0) invoke recv,hsock,addr tempBuffer,BUFFER_SIZE,0 invoke MessageBox,0,addr tempBuffer,addr tempBuffer,0 invoke Mys,SADD("RCPT TO:<mlrb@mail.ru>",0) invoke recv,hsock,addr tempBuffer,BUFFER_SIZE,0 invoke MessageBox,0,addr tempBuffer,addr tempBuffer,0 invoke Mys,SADD("DATA",13,10,0) invoke recv,hsock,addr tempBuffer,BUFFER_SIZE,0 invoke MessageBox,0,addr tempBuffer,addr tempBuffer,0 invoke Mys,SADD("Hi, I`m Troyan",13,10,0) invoke recv,hsock,addr tempBuffer,BUFFER_SIZE,0 invoke MessageBox,0,addr tempBuffer,addr tempBuffer,0 invoke Mys,SADD(13,10,".",13,10,0) invoke recv,hsock,addr tempBuffer,BUFFER_SIZE,0 invoke MessageBox,0,addr tempBuffer,addr tempBuffer,0 Mys proc SendStr : DWORD ; edi указывает на пришедшую строку mov edi, SendStr ; цикл перебора .WHILE TRUE ; если конец строки - выход из цикла .BREAK .IF (byte ptr [edi] == 0 ) ; отправка текущего символа invoke send, hsock, edi, 1, 0 ; следующий символ inc edi .ENDW ret Mys endp
вот чей-то подобный исходник. Странно не вижу кнопку прикрепить у себя. ЕЕ теперь нет у всех ? Code (Text): .386 .model flat, stdcall option casemap :none include \masm32\include\windows.inc include \masm32\include\masm32.inc include \masm32\include\kernel32.inc include \masm32\include\ws2_32.inc include \masm32\include\user32.inc includelib \masm32\lib\masm32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\ws2_32.lib includelib \masm32\lib\user32.lib .data SOCKADDR STRUCT sin_family WORD ? sin_port WORD ? sin_addr in_addr <> sin_zero BYTE 8 dup (?) SOCKADDR ENDS wsadata WSADATA <> s_addr SOCKADDR <> sock dd 0 r_buf db 512 dup(0) ;-------------------------------------------------- s_helo db "HELO EHLO",0dh,0ah szhelo equ $ - offset s_helo s_from db "MAIL FROM:<111@mail.ru>",0dh,0ah; ------------- сменить szfrom equ $ - offset s_from s_to db "RCPT TO: <222@e-mail.ru>",0dh,0ah; ------------- сменить szto equ $ - offset s_to s_data db "DATA",0dh,0ah szdata equ $ - offset s_data s_headers db "TO: 222@e-mail.ru",0dh,0ah db "Subject: smtp",0dh,0ah db "FROM: 111@mail.ru",0dh,0ah s_body db "My first mail.",0dh,0ah db 0dh,0ah,".",0dh,0ah szbody equ $ - offset s_body szheaders equ $ - offset s_headers s_quit db "QUIT",0dh,0ah szquit equ $ - s_quit crlf db 13,10,0 ;IP db "199.149.62.15",0 ; www.e-mail.ru ;IP db "195.161.118.50",0 ; www.e-mail.ru ;IP db "194.67.23.111",0 ; www.mail.ru IP db 20 dup(0) .data? .code ;---------------------------------------------------------------- start: invoke GetCL,1,ADDR IP .if eax != 1 ret .endif invoke WSAStartup,101h,offset wsadata invoke socket,AF_INET,SOCK_STREAM,0 mov sock,eax mov s_addr.sin_family,AF_INET invoke htons,25 mov s_addr.sin_port,ax invoke inet_addr,ADDR IP mov s_addr.sin_addr,eax invoke connect,sock,addr s_addr,sizeof s_addr invoke recv,sock,addr r_buf,512,0 invoke send,sock,addr s_helo,szhelo,0 call recvlp ;invoke StdOut,ADDR crlf invoke send,sock,addr s_from,szfrom,0 call recvlp ;invoke StdOut,ADDR crlf invoke send,sock,addr s_to,szto,0 call recvlp ;invoke StdOut,ADDR crlf invoke send,sock,addr s_data,szdata,0 call recvlp ;invoke StdOut,ADDR crlf invoke send,sock,addr s_headers,szheaders,0 call recvlp ;invoke StdOut,ADDR crlf invoke send,sock,addr s_quit,szquit,0 call recvlp ;invoke StdOut,ADDR crlf invoke closesocket,sock invoke WSACleanup ;invoke ExitProcess,0 ret ;------------CLEAR BUFFER------------ clear: mov ecx,512 lea edi,offset r_buf r: mov byte ptr [edi],00h inc edi loop r ;mov byte ptr [r_buf+512],0 ret ;------------------------------------ ;------------------------------------ recvlp: invoke recv,sock,addr r_buf,512,0 .IF EAX!=SOCKET_ERROR ;INT 3 invoke StdOut,ADDR r_buf .ENDIF call clear ret ;------------------------------------ ;------------------------------------ end start
MSoft правильно сказал надо CRLF в конце добавлять а в самой последней строчке хидера их два если надо могу пример отправка с аттачем на fasm скинуть