Page 1 sur 1

Gmail Checker

Publié : mar. 30/nov./2010 17:28
par Parole De JOJO
un code que j'ai peche sur le forum anglais, et j'ai un peu adapte
il marche tres bien pour gmail, pour l'instant il verifie seulement si il y a des nouveaux mails, mais je n'ai pas reussi a lire les mails entrants

Code : Tout sélectionner

Procedure gmail(user$,pass$,numfil,file.s)
  email$ = user$ + "%40gmail%2Ecom"
  len = 57 + Len(email$) + Len(pass$)
  
  If InitNetwork()
    *Buffer = AllocateMemory(3000)
    ConnectionID = OpenNetworkConnection("mail.google.com", 80)
    If ConnectionID
      If CreateFile(numfil,file)
        request$ = "POST https://www.google.com/accounts/ClientLogin HTTP/1.0" + Chr(10)
        request$ + "Content-type: application/x-www-form-urlencoded" + Chr(10)
        request$ + "Connection: keep-alive" + Chr(10)
        request$ + "Content-length: " + Str(len) + Chr(10) + Chr(10)
        request$ + "&Email=" + email$ + "&Passwd=" + pass$ + "&accountType=HOSTED_OR_GOOGLE&service=mail"
        SendNetworkString(ConnectionID, request$)
        Debug "Logging in.."
        Delay(2000)
        Repeat
          Event = NetworkClientEvent(ConnectionID)
          Select Event
            Case #PB_NetworkEvent_Data
              ReceiveNetworkData(ConnectionID, *Buffer, 3000)
              response$ = PeekS(*Buffer)
              FreeMemory(*Buffer) 
              *Buffer = AllocateMemory(3000)
              For x = 1 To CountString(response$, Chr(10))
                curline$ = StringField(response$, x, Chr(10))
                WriteString(numfil, curline$)
                If FindString(curline$, "Auth=", 0)
                  auth$ = "GX=" + Mid(curline$, 6)
                  Debug "sending request for mail feed.."
                  request$ = "GET /mail/feed/atom/ HTTP/1.1" + Chr(10)
                  request$ + "Host: mail.google.com" + Chr(10)
                  request$ + "Cookie: " + auth$ + Chr(10) + Chr(10)
                  SendNetworkString(ConnectionID, request$)
                  Delay(2000)         
                EndIf
              Next x
          EndSelect   
          
        Until Event = 0
        CloseFile(numfil)
      EndIf
    EndIf
  EndIf
  ProcedureReturn ConnectionID
EndProcedure


Procedure.s beet(t.s,debut.l,fir.s,sec.s)
  a.l=FindString(t,fir,debut)
  b.l=FindString(t,sec,debut)
  c.s=Mid(t,a+Len(fir),b-a-Len(fir))
  ProcedureReturn c
EndProcedure

Procedure readheaders(numfil.l,file.s,max.l)
  ReadFile(numfil,file)
  While Eof(numfil) = 0 
    t.s=ReadString(numfil)
    key.s=beet(t,1,"<",">")
    value.s=beet(t,1,"<"+key+">","</"+key+">")
    Select key
      Case "fullcount":num=Val(value)
        If num>max:num=max:EndIf:Dim mail.s(num,6)
      Case "entry":k+1
      Case "title"
        If k:mail(k,1)=value:EndIf
      Case "summary":mail(k,2)=value
      Case "author":p=1
      Case "contributor":p=2
      Case "/author","/contributor":p=0
      Case "name":mail(k,3+(-2+p*2))=value
      Case "email":mail(k,4+(-2+p*2))=value
    EndSelect
    If k>num:Break:EndIf
  Wend
  CloseFile(numfil)
  
  For k=1 To num
    tt.s="From : "+mail(k,3)+" <"+mail(k,4)+">"+Chr(10)
    tt+"To : "+mail(k,5)+" <"+mail(k,6)+">"+Chr(10)
    tt+"Title : "+mail(k,1)+Chr(10)
    tt+"Message : "+mail(k,2)+Chr(10)
    MessageRequester("Mail No "+Str(k)+"/"+Str(num),tt)
  Next
EndProcedure

user$ = InputRequester("Gmail","Username","")
pass$ = InputRequester("Gmail","Password","")

file.s="4.html"

If gmail(user$,pass$,0,file)
  readheaders(1,file,20)
;   DeleteFile(file)
EndIf

Re: Gmail Checker

Publié : mar. 30/nov./2010 21:41
par Backup
..........

Re: Gmail Checker

Publié : dim. 05/déc./2010 11:34
par Parole De JOJO
Dobro a écrit :j'ai chez moi depuis de lustres un code qui regarde le nombre de message
de mon email , et qui utilise la synthese vocale pour me dire
qu'il y a X messages en attente

et qui me propose meme la possibilité de les lires ....

facile a faire
avec les fonctions mail de Purebasic , un timer, et la synthese vocale via ma lib :)
et... tu la partage?

Re: Gmail Checker

Publié : mar. 07/déc./2010 13:20
par Parole De JOJO
code adapte pour lire les messages
mais... une fois passe en procedure, il ne marche plus
mystere

Re: Gmail Checker

Publié : mar. 07/déc./2010 14:32
par Backup
Parole De JOJO a écrit :code adapte pour lire les messages
mais... une fois passe en procedure, il ne marche plus
mystere

de quoi tu parle ?