ANTI SPAMS

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
lionel_om

Message par lionel_om »

Bonjour a tous :D
Dsl de ne pas avoi mis de nouvelles depuis qq jours, mais g t tré oqp

J'ai tenté de faire marcher le bout de code que vous m'avez envoyé (cette fois-ci avec mon adresse wanadoo, mais cette derniere ne fonctionne plus et je ne peux pas en créer une autre). Donc je voudrais savoir si vous connaissez d'autres providers (ex: yahoo...)

J'aimerez également avoir des remarques (même des critiques :wink: ) sur mon programme.

Je vous remercie.
@++ et bonnes vacances à tous :mad:
lionel_om

Message par lionel_om »

Re bonjour
Finalement j'ai réussit a trouV des adresses de providers
Donc G utilisé mon adresse Free (celui qui ma été fournit avec mon espace de stockage pour mon site), mais j'ai un problème:

Le programme se déroule normalement jusqu'à arriver à : Type msg# to retreive:. Que doit rentrer ?
Je me susi envoyer un mail à mon adresse Free avec pour titre "Salut", puis G donc tapper "Salut" à cet input(), mais le programme s'arrete. Un fichier MAIL.txt est créé et contient ceci :
1 1108
2 1129
.
Donc je suis un peu perdu et vous demande donc un peu d'aide...
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Non, si tu es bien après la commande list comme j'ai cru comprendre, il faut faire par numéro de message et donc lui envoyer la chaine

Code : Tout sélectionner

"RETR Numero_du_Message" + Eol
Encore une fois je te redirige vers www.salemioche.com
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Voilà un PETIT modèle à NE PAS SUIVRE mais je le poste quand même :D :D .
Bon, je viens de faire ça et je n'ai pas le temps de faire plus. La façon dont c'est construit n'est SURTOUT PAS à refaire. C'est juste pour te montrer l'enchainement de commandes à utiliser pour retirer un message simplement, je n'ai pas le temps de faire un début de logiciel correct. J'espère que ça pourra t'aider a+.

Code : Tout sélectionner

InitNetwork()
*Buffer = AllocateMemory(0,2000) ; Buffer pour recevoir les données
Eol.s = Chr(13) + Chr(10)

ClientID = OpenNetworkConnection("pop.wanadoo.fr",110) ; Connection au serveur "pop.wanadoo.fr", port SMTP donc 110
ReceiveNetworkData(ClientID,*Buffer,2000) ; Reception du message de bienvenue
Debug PeekS(*Buffer)

FreeMemory(0) ; On libère le buffer
*Buffer = AllocateMemory(0,2000) ; puis on le recré. Sert à être sur que le buffer soit vide.
SendNetworkString(ClientID,"USER " + InputRequester("Utilisateur","Utilisateur ?","") + Eol) ; On lui envoi le nom d'utilisateur
ReceiveNetworkData(ClientID,*Buffer,2000)
Debug PeekS(*Buffer)

FreeMemory(0)
*Buffer = AllocateMemory(0,2000)
SendNetworkString(ClientID,"PASS " + InputRequester("Mot de passe","Mot de passe ?","") + Eol) ; On lui envoi le mot de passe
ReceiveNetworkData(ClientID,*Buffer,2000)
Debug PeekS(*Buffer)

FreeMemory(0)
*Buffer = AllocateMemory(0,2000)
SendNetworkString(ClientID,"LIST" + Eol) ; On lui demande de nous envoyer le nombre de messages et leur taille en octets.
ReceiveNetworkData(ClientID,*Buffer,2000)
MessageRequester("","Vous avez ces messages :" + Eol + PeekS(*Buffer))

FreeMemory(0)
*Buffer = AllocateMemory(0,2000)
SendNetworkString(ClientID,"RETR " + InputRequester("Numero","Numero du message à lire ?","") + Eol) ; On lui demande de nous envoyer le message à lire
ReceiveNetworkData(ClientID,*Buffer,2000)
MessageRequester("","Le message est :" + Eol + PeekS(*Buffer))
Debug PeekS(*Buffer)
CreateFile(0,SaveFileRequester("Nom du fichier à sauvegarder","","Texte | *.txt",0)) ; Cré un fichier pour le message
WriteData(*Buffer,2000) ; le sauvegarde dedans
CloseFile(0)

; FreeMemory(0)
; *Buffer = AllocateMemory(0,2000)
; SendNetworkString(ClientID,"DELE " + InputRequester("Numero","Numero du message à suprimmer ?","") + Eol) ; On lui demande de supprimer le message.
; ReceiveNetworkData(ClientID,*Buffer,2000)
; MessageRequester("","Le message est :" + Eol + PeekS(*Buffer))
; Debug PeekS(*Buffer)

SendNetworkString(ClientID,"QUIT" + Eol) ; On quitte
Debug "fini"
lionel_om

Message par lionel_om »

Merci pour ta réponse Oliv :lol:
G testé un peuton code et ca m'enrregistre un fichier vierge sur mon disque dur. Donc il faut que je regarde pour les numéro des indices (qd il demande le n° de fichier). Je t'avouerais que je n'ai pas eu beaucoup le temps de m'occuper de mon anti-spam ces derniers jours, car je n'est plus la chance d'etre en vacances.
Par contre ce soir je vais pouvoir consacrer un peu plus de temps pour ce projet et jorais donc sans doute des questions a te poser, des remarques ou des merci.

En tout cas je t'en remerci d'ores et déja. :P

Par contre je nai toujours pas u de remarque qt à mon programme :( , donc si je pouvez en recevoir ca serait cool ! :D

@++ tt le monde
lionel_om

Message par lionel_om »

Re :D
Je teste depuis qqs min ton prog Oliv. 8)
Donc j'arrive bien a me connecter à ma boite email (user +pswd + pop corrects). Mais je n'arrive pas à y lire mes messages.
La boite de dialogue qui affiche la liste des mails, ne me mets que '+OK'. Pourtant j'ai bien des mails sur mon compte. Je ne sait pas si il ni a que les mails non lus qui sont référencés, mais de toute facon j'ai testé avec des mails lus et non lus sur mon compte et la liste de la MSGREQUESTER est toujours vierge.
Mais je ne me suis pas arrété là, j'ai quand même essayé de tapper un numéro pour ouvrir un mail. Donc j'ai tapper des nombres (0, 1, 2) et j'ai eu la même réponse que précédeement quant à ce qui été stocké dans le mail (cad : 1 1108 2 1129 .). Je vois cette indication. J'en déduis que les nombre 1 et 2 indiques les numéros des mails et que 1108 et 1129 sont les tailles des fichiers. Mais je n'arrive toujours pas à avoir le contenu de ces fichiers. La messagebox et la sauvegarde des fichiers ne contient que la liste avec les tailles !!!

A l'aide svp ! :(
@++
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Tu as compris pour 1=numero du message et 1088=taille.
En se qui concerne ton problème je ne comprends pas : Tu dis que la boite de dialogue qui affiche les mails met seulement "+ OK" et après tu dis qu'elle affiche le numero des messages et la taille. Je ne comprends pas puisque le numero et la taille est la même chose. Sinon, que le mail est été ouvert ou pas ça ne change rien
lionel_om

Message par lionel_om »

Ok, merci bien Oliv
Là je ne suis pas chez moi, donc je n'ai pas PureBasic
Je t'enverrais ce week-end (sur ton adresse email) des screens shot des boites de dialogues qui s'affichent.
Pour s'implifier mes tests, j'ai mis les noms d'utilisateur, pswd... dans des 'variables constantes'. Donc il n'y aura pas de captures d'écran sur ce que j'ai entré en mot de passe ... (en + cela aurait été inutil)
Encore une fois mezrci bien pr ton aide !!!!! :D
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Ok, parcontre, je par dimanche matin donc je ne pourrais pas te répondre si tu envois trop tard
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Ici une version un "petit peu mieux construite" et compatible avec les serveurs envoyant plus réponses par commande. Je mettrais des commentaires corrects et vous expliquerai pourquoi ça fonctionne mieux demain.

Code : Tout sélectionner

InitNetwork()
*Buffer = AllocateMemory(0,2000) ; Buffer pour recevoir les données
Eol.s = Chr(13) + Chr(10)

ClientID = OpenNetworkConnection("pop.wanadoo.fr",110) ; Connection au serveur "pop.wanadoo.fr", port SMTP donc 110
ReceiveNetworkData(ClientID,*Buffer,2000) ; Reception du message de bienvenue
Debug PeekS(*Buffer)

SendNetworkString(ClientID,"USER VOTRENOM" + Eol) ; On lui envoi le nom d'utilisateur
Repeat
  FreeMemory(0)
  *Buffer = AllocateMemory(0,2000)
  ReceiveNetworkData(ClientID,*Buffer,2000)
  Debug PeekS(*Buffer)
Until NetworkClientEvent(ClientID) <> 2

SendNetworkString(ClientID,"PASS VOTREPASS" + Eol) ; On lui envoi le mot de passe
Repeat
  FreeMemory(0)
  *Buffer = AllocateMemory(0,2000)
  ReceiveNetworkData(ClientID,*Buffer,2000)
  Debug  PeekS(*Buffer)
Until NetworkClientEvent(ClientID) <> 2

SendNetworkString(ClientID,"LIST" + Eol) ; On lui demande de nous envoyer le nombre de messages et leur taille en octets.
Repeat
  FreeMemory(0)
  *Buffer = AllocateMemory(0,2000)
  ReceiveNetworkData(ClientID,*Buffer,2000)
  MessageRequester("","La liste de messages est :" + Eol + PeekS(*Buffer))
Until NetworkClientEvent(ClientID) <> 2

SendNetworkString(ClientID,"RETR " + InputRequester("Numero","Numero du message à lire ?","") + Eol) ; On lui demande de nous envoyer le message à lire
CreateFile(0,SaveFileRequester("Nom du fichier à sauvegarder","","Texte | *.txt",0) + ".txt") ; Cré un fichier pour le message 
Repeat
  FreeMemory(0)
  *Buffer = AllocateMemory(0,2000)
  ReceiveNetworkData(ClientID,*Buffer,2000)
  WriteData(*Buffer,2000) ; le sauvegarde dedans  
  MessageRequester("","Le message est:" + Eol + PeekS(*Buffer))
Until NetworkClientEvent(ClientID) <> 2
CloseFile(0)

; FreeMemory(0)
; *Buffer = AllocateMemory(0,2000)
; SendNetworkString(ClientID,"DELE " + InputRequester("Numero","Numero du message à suprimmer ?","") + Eol) ; On lui demande de supprimer le message.
; ReceiveNetworkData(ClientID,*Buffer,2000)
; MessageRequester("","Le message est :" + Eol + PeekS(*Buffer))
; Debug PeekS(*Buffer)

SendNetworkString(ClientID,"QUIT" + Eol) ; On quitte
Debug "fini"
lionel_om

Message par lionel_om »

Merci Oliv pour ce bout de code
J'ai testé et c'est impec.
Moi j'utilsé free et le code d'avant ne marché pas. Maintenant, j'ai bien le contenu du mail qui est affiché (avec l'entête...)

Merci, je V vraiment pouvoir commenC mon proG now !!!! :D
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Voiulà une version ancore changé avec des meuilleures explications.

Code : Tout sélectionner

InitNetwork()
*Buffer = AllocateMemory(0,2000) ; Buffer pour recevoir les données.
Global *Buffer


Procedure Dialogue(ConnectionID.l,Texte.s)
  SendNetworkString(ConnectionID,Texte + Chr(13) + Chr(10)) ; On envoi la commande.
  Repeat
    FreeMemory(0)
    *Buffer = AllocateMemory(0,2000)
    ReceiveNetworkData(ConnectionID,*Buffer,2000)
    Debug PeekS(*Buffer)
  Until NetworkClientEvent(ConnectionID) <> 2
EndProcedure

ClientID = OpenNetworkConnection("pop.wanadoo.fr",110) ; Connection au serveur "pop.wanadoo.fr", port SMTP donc 110. Je ne passe pas par Dialogue() car on n'envoi pas de message.
Repeat ; On execute la boucle.............
  FreeMemory(0) ; On libère la mémoire puis on la recrée pour la vider complètement.
  *Buffer = AllocateMemory(0,2000)
  ReceiveNetworkData(ClientID,*Buffer,2000) ; On reçoit les données.
  Debug PeekS(*Buffer) ; On les affiches.
Until NetworkClientEvent(ClientID) <> 2 ; ..........tant que le serveur a encore des datas à nous envoyer.

Dialogue(ClientID,"USER USER") ; On envoi le nom d'utilisateur.

Dialogue(ClientID,"PASS PASS") ; On envoi le mot de passe.

Dialogue(ClientID,"LIST") ; On lui demande de nous envoyer le nombre de messages et leur taille en octets.

SendNetworkString(ClientID,"RETR " + InputRequester("Numero","Numero du message à lire ?","")) ; On lui demande de nous envoyer le message à lire. Je ne passe pas par la fonction dialogue car il faut enregistrer le message.
CreateFile(0,SaveFileRequester("Nom du fichier à sauvegarder","","Texte | *.txt",0) + ".txt") ; Cré un fichier pour le message.
Repeat
  FreeMemory(0)
  *Buffer = AllocateMemory(0,2000)
  ReceiveNetworkData(ClientID,*Buffer,2000)
  WriteData(*Buffer,2000) ; le sauvegarde dedans  .
  MessageRequester("","Le message est:" + PeekS(*Buffer))
Until NetworkClientEvent(ClientID) <> 2
CloseFile(0) ; ferme le fichier.

; Dialogue(ClientID,"DELE " + InputRequester("Numero","Numero du message à suprimmer ?","")) ; On demande de supprimer le message. Je ne passe pas par la fonction dialogue car il faut enregistrer le message.


SendNetworkString(ClientID,"QUIT") ; On quitte
Debug "fini"
Dernière modification par Oliv le sam. 06/mars/2004 18:26, modifié 1 fois.
lionel_om

Message par lionel_om »

Merci encore Oliv, des ke j'ai le temps je me plonge dans la gestion des spams.
lionel_om

Message par lionel_om »

voici le code source du programme de configuration de mon anti-spam :

Code : Tout sélectionner

#file.s = "infos.txt"

#boutton = 1
#gadget = 3
#gadget_nbr = 3
#text = 6
#save = 9
#ok = 12
#annul = 13

EOL.s = Chr(13) + Chr(10)


Global user.s, pswd.s, prov.s
Global checked.b, pourcentage.b, option1.b
;user = "lionel"
;pswd = "020585"
;prov = "pop.free.fr"


Procedure save_data()
  If CreateFile(1,#file)
    WriteByte(Len(user))
    For i = 1 To Len(user): WriteByte(255 - Asc(Mid(user,i,1))): Next i
    WriteByte(Len(pswd))
    For i = 1 To Len(pswd): WriteByte(255 - Asc(Mid(pswd,i,1))): Next i
    WriteByte(Len(prov))
    For i = 1 To Len(prov): WriteByte(255 - Asc(Mid(prov,i,1))): Next i
    WriteByte(checked)
    WriteByte(pourcentage)
    WriteByte(GetGadgetState(#save))
    CloseFile(1)
    ProcedureReturn(1)
  Else
    ProcedureReturn(0)
  EndIf
EndProcedure


Procedure load_data()
  If OpenFile(1, #file)
    user = "": pswd = "": prov = ""
    u = ReadByte(): For i = 1 To u: user = user + Chr(255-ReadByte()): Next i
    u = ReadByte(): For i = 1 To u: pswd = pswd + Chr(255-ReadByte()): Next i
    u = ReadByte(): For i = 1 To u: prov = prov + Chr(255-ReadByte()): Next i
    checked = ReadByte()
    pourcentage = ReadByte()
    option1 = ReadByte()
    CloseFile(1)
    ProcedureReturn(1)
  Else
    ProcedureReturn(0)
  EndIf
EndProcedure




If OpenWindow(0, 0, 0, 260, 310, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_TitleBar, "Anti-spam - Option") 
   If CreateGadgetList(WindowID())
   
   ;save_data()
   load_data()
   
   TextGadget(0, 10, 10, 250, 20, "Nom d'utilisateur :     " + user) 
   ButtonGadget(#boutton, 30, 30, 100, 25, "Modifier") 
   
   TextGadget(2, 10, 80, 150, 20, "Niveau de filtrage :")
   
   CheckBoxGadget(#gadget+0, 30, 100, 130, 20, "Filtrage assuré (100%)")
   CheckBoxGadget(#gadget+1, 30, 120, 130, 20, "Filtrage strict    (  75%)")
   CheckBoxGadget(#gadget+2, 30, 140, 60, 20, "autre  :")
   If checked
     SetGadgetState(checked,1)
   Else
     SetGadgetState(#gadget+1,0): checked = #gadget+1
   EndIf
   
   StringGadget(#text, 100, 140, 40, 20, "")
   SetGadgetText(#text, Str(pourcentage))
   TextGadget(7, 150, 143, 350, 20, "(pourcentage)")
     

   TextGadget(8, 10, 180, 150, 15, "Autres options :")
   CheckBoxGadget(#save, 30, 200, 300, 15, "Conserver les mails supprimés.")
   TextGadget(10, 50, 215, 350, 15, "(si on n'est pas totalement sur que le mail")
   TextGadget(11, 50, 230, 350, 15, "est bien un spam)")
     SetGadgetState(#save,option1)

   ButtonGadget(#ok,     40, 270, 80, 25, "OK")
   ButtonGadget(#annul, 140, 270, 80, 25, "Annuler")

   EndIf
EndIf




Repeat 
Event = WaitWindowEvent()
Event2 = EventGadgetID()

If Event = #PB_Event_Gadget 
  ; gestion des checkbox
  If (Event2 >= #gadget And Event2 < #gadget + #gadget_nbr)
    For i = 0 To #gadget-1
      SetGadgetState(#gadget+i,0)
    Next i
      SetGadgetState(Event2,1): checked = Event2
  EndIf

  If Event2 = #boutton
    user = InputRequester("Configuration", "Nom d'utilisateur : ", user)
    pswd = InputRequester("Configuration", "Mot de passe : ", pswd)
    prov = InputRequester("Configuration", "Adresse du Provider :  (ex: pop.free.fr)", prov)
    SetGadgetText(0,"Nom d'utilisateur :     " + user)
  EndIf
  
  If Event2 = #text
    If Val(GetGadgetText(#text)) <   0 :SetGadgetText(#text,Str(  0)): EndIf
    If Val(GetGadgetText(#text)) > 100 :SetGadgetText(#text,Str(100)): EndIf
  EndIf
  
  If Event2 = #ok
    If user <> "" And pswd <> "" And prov <> ""
      y = save_data()
      If y = 0: y = MessageRequester("Attention", "Une erreur s'est produite durant la sauvegarde de vos paramètres." + EOL + "Le programme va être quitter !", #PB_MessageRequester_Ok): End: EndIf
      End
    Else
      y = MessageRequester("Attention", "Les données sont incomplètes." + EOL + "Veuillez saisir votre login, mot de passe et l'adresse de votre provider.", #PB_MessageRequester_Ok)
    EndIf
  EndIf
  
  If Event2 = #annul
    End
  EndIf  
EndIf

Until Event = #PB_EventCloseWindow; si on appui sur la croix, on ferme le programme 
End
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

J'espere que le mot de passe que tu as donné n'est pas le bon :roll: Tu sais c'est mal fréquenté ici :lol: Non serieux... Si un modo pouvait éditer pour lui assez rapidement ca lui éviterais les ennuis...
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
Répondre