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