Page 2 sur 4

Publié : ven. 20/févr./2004 10:30
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:

Publié : ven. 20/févr./2004 11:03
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...

Publié : ven. 20/févr./2004 12:18
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

Publié : ven. 20/févr./2004 21:37
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"

Publié : mer. 25/févr./2004 10:30
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

Publié : mer. 25/févr./2004 18:44
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 ! :(
@++

Publié : mer. 25/févr./2004 18:53
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

Publié : jeu. 26/févr./2004 9:26
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

Publié : jeu. 26/févr./2004 11:01
par Oliv
Ok, parcontre, je par dimanche matin donc je ne pourrais pas te répondre si tu envois trop tard

Publié : jeu. 26/févr./2004 23:35
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"

Publié : ven. 27/févr./2004 11:41
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

Publié : ven. 27/févr./2004 21:45
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"

Publié : mar. 02/mars/2004 21:38
par lionel_om
Merci encore Oliv, des ke j'ai le temps je me plonge dans la gestion des spams.

Publié : mar. 02/mars/2004 22:16
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

Publié : mar. 02/mars/2004 22:20
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...