Permet d'envoyer un mail grace a winsock
Source / Exemple :
;MASM32
.486
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\masm32.inc
include \masm32\include\wsock32.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\wsock32.lib
includelib \masm32\lib\masm32.lib
Mys PROTO :DWORD
.DATA
SMTP db "195.238.3.128",0 ;IP du srv smtp.infonie.be
HELO db "HELO smtp.infonie.be",13 ,10 ,0
MAIL_FROM db "MAIL FROM:dequi@cavien.fr",13 ,10 ,0
RCPT_TO db "RCPT TO:personne@quituvxenvoyer.com",13 ,10 ,0
DONNEES db "DATA",13 ,10 ,0
TEXTE db "Hello world !",13 ,10 ,13 ,10 ,0
FIN_DONNEES db ".",13 ,10 ,0
FERME db "QUIT",13 ,10 ,0 ;fini la connection
;smtp
wsadata WSADATA <> ;pour la structure du socket
sin sockaddr_in <>
Port dd 25 ;port smtp
.DATA?
sock dd ? ;pour la structure du socket
buf db 255 dup (?) ;buffer pour le MessageBox
.CODE
start:
invoke WSAStartup,101h,addr wsadata ;initialise le socket
invoke socket,AF_INET,SOCK_STREAM,IPPROTO_IP
mov sock,eax
mov sin.sin_family,AF_INET ;famille de socket
invoke htons,Port ;port 25
mov sin.sin_port,ax
invoke inet_addr, addr SMTP ;ip du smtp
mov sin.sin_addr, eax
invoke connect, sock, addr sin ,sizeof sin ;on se connecte
invoke recv, sock, addr buf, sizeof buf, 0 ;et affiche la reponse
; HELO SERVER
invoke Mys, addr HELO ;envoit HELO smtp.infonie.be
invoke recv, sock, addr buf, sizeof buf, 0
invoke MessageBox,0,addr buf, addr HELO, MB_OK
; MAIL TO:
invoke Mys, addr MAIL_FROM ;envoit MAIL FROM:
invoke recv, sock, addr buf, sizeof buf, 0
invoke MessageBox,0,addr buf, addr MAIL_FROM, MB_OK
; RCPT TO:
invoke Mys, addr RCPT_TO ;envoit RCPT TO:
invoke recv, sock, addr buf, sizeof buf, 0
invoke MessageBox,0,addr buf, addr RCPT_TO, MB_OK
; DATA
invoke Mys, addr DONNEES ;envoit DATA
invoke recv, sock, addr buf, sizeof buf, 0
invoke MessageBox,0,addr buf, addr DONNEES, MB_OK
invoke Mys, addr TEXTE ;envoit le text
; DATA
invoke Mys, addr FIN_DONNEES ;envoit .
invoke recv, sock, addr buf, sizeof buf, 0
invoke MessageBox,0,addr buf, addr FIN_DONNEES, MB_OK
; DATA
invoke Mys, addr FERME ;envoit QUIT
invoke recv, sock, addr buf, sizeof buf, 0
invoke MessageBox,0,addr buf, addr FERME, MB_OK
invoke closesocket,sock ;ferme le socket et quit
invoke WSACleanup
invoke ExitProcess,eax
;---------------------------------------
Mys proc SendStr : DWORD
push edi
mov edi, SendStr
.WHILE TRUE
.BREAK .IF (byte ptr [edi] == 0 )
invoke send, sock, edi, 1, 0
inc edi
.ENDW
pop edi
ret
Mys endp
END start
Conclusion :
visite
http://www.passionpc.net
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.