Envoit mail masm32

Contenu du snippet

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

A voir également

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.

Du même auteur (Supden2000)