|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
ENVOIT MAIL MASM32
Information sur la source
Description
Permet d'envoyer un mail grace a winsock
Source
- ;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
;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
Historique
- 12 décembre 2004 17:17:46 :
- ajout de WSACleanup
WSACleanup permet à windows de "nettoyer" la RAM que l'on prenait avec winsock.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Comparez les prix Nouvelle version
|