[R] UDF GMAIL.au3

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

[R] UDF GMAIL.au3

#1

Message par cutprod »

Bonjour, récemment j'ai chercher le moyen de crée un script qui me vérifie mes emails.
Grâce à pierrotm777, j'ai trouver un udf qui me va très bien!
http://www.autoitscript.com/forum/topic ... l-checker/
pierrotm777 Merci a toi.
Maintenant je voudrais que quand mon script détecte qu'un nouveau email est arriver dans ma boite gmail il me donne le choix de l'afficher ou pas.
Le tout dans un _IECreate.
J'ai une fonction qui m'ouvre IE et qui me log dans ma boite email :

Code : Tout sélectionner

Func go_to_email()

$ie = _IECreate("https://www.google.com/accounts/ServiceLogin?service=mail&passive=true&rm=false&continue=http%3A%2F%2Fmail.google.com%2Fmail%2F%3Fhl%3Dfr%26tab%3Dwm%26ui%3Dhtml%26zy%3Dl&bsv=1eic6yu9oa4y3&scc=1&ltmpl=default&ltmplcache=2&hl=fr")
WinSetState(_IEPropertyGet ($ie, "hwnd" ), "",@SW_MAXIMIZE )

$o_form = _IEFormGetObjByName($ie, "gaia_loginform")
$o_login = _IEFormElementGetObjByName($o_form, "Email")
$o_password = _IEFormElementGetObjByName($o_form, "Passwd")
_IEFormElementSetValue($o_login, $Username)
_IEFormElementSetValue($o_password, $Password)
_IEFormSubmit($o_form,0)

EndFunc
Mais après ça je bloque j'arrive pas a lui faire cliquer sur l' email en question...ou n'importe lequel...
j'ai tester presque toute les fonction de l'udf IE.au3, je bloque ...
Quelqu'un pour m'aider?
pierrotm777, j'ai cru comprendre que tu cherché à faire la même chose, y es-tu parvenu?
Modifié en dernier par cutprod le mer. 24 nov. 2010 12:48, modifié 1 fois.
Cut, srcipteur du dimanche...désolé !-)
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [..] UDF GMAIL.au3

#2

Message par cutprod »

Je pensais pouvoir retrouver l'id ou l'objet du mail grâce a son titre, au sujet ou les autre infos qui me sont fournit par l'udf qui lui lit la page en xml, mais non rien j'arrive pas a accrocher, je doit louper un truc.
J'ai même penser passer la page en revu et isoler le "string" correspondant au titre, mais la non plus, je n'y parviens pas!
Cut, srcipteur du dimanche...désolé !-)
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] UDF GMAIL.au3

#3

Message par pierrotm777 »

Vous pouvez essayer cela qui devrait correspondre à votre attente , enfin je crois !
► Afficher le texte
Quant à vous aider pour l'IEcreate, je ne suis pas assez doué ,mais votre travail intéresse .
Si vous pouvez confier l'ensemble de votre code ?
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [..] UDF GMAIL.au3

#4

Message par cutprod »

Merci pour votre réponse.
En fait je maitrise déjà cet aspect du script, ma question ne concerné pas l'affichage des infos extracté de la page "inputbox".
Je met en ligne tout mon code ce soir après le boulot.Peut etre cela avancera la résolution de mon problème.
Merci
Cut, srcipteur du dimanche...désolé !-)
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [..] UDF GMAIL.au3

#5

Message par cutprod »

Voila mon "assemblage" :

Code : Tout sélectionner

#include <GMail.au3>
#include <INet.au3>
#include <IE.au3>


#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>


#Region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("ALEX_GMAIL", 270, 230,100,100)

$Button1 = GUICtrlCreateButton("Suivant", 184, 192, 75, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Précédent", 10, 192, 75, 25, $WS_GROUP)
$Button3 = GUICtrlCreateButton("Gmail", 96, 192, 75, 25, $WS_GROUP)

$EmailCount = GUICtrlCreateLabel("", 10, 8, 240, 30)
$EmailTitle = GUICtrlCreateLabel("", 10, 33, 240, 30)
$EmailFromName = GUICtrlCreateLabel("", 10, 70, 240, 30)
$EmailFromEmail = GUICtrlCreateLabel("", 10, 95, 240, 30)
$EmailBody = GUICtrlCreateLabel("", 10, 120, 240, 49)

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###



Global $Username = "***"
Global $Password = "***"
Global $CurrentMessage = 0
Global $ie
Global $texte
Global $EmailFromName

AdlibRegister("UpdateGMail",60000)



While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            _IEQuit ($ie)
            Exit
        Case $Button1
            RightArrowPressed()
        Case $Button2
            LeftArrowPressed()
        Case $Button3
            go_to_email()
    EndSwitch
WEnd

Func UpdateGMail()
    UpdateGMailXML($Username, $Password)
    Switch @error
        Case 1
            ;invalid login information
            MsgBox(262192, "GMail Error", "The credentials provided are not valid")
            Exit
        Case 2
            ;no unread email
        Case Else
            SetEmailText()
    EndSwitch
EndFunc   ;==>UpdateGMail

Func SetEmailText()
    If GetCount() = 0 Then
        GUICtrlSetData($EmailCount, " ")
        GUICtrlSetData($EmailTitle, " ")
        GUICtrlSetData($EmailFromName, " ")
        GUICtrlSetData($EmailFromEmail, "No Unread Email")
        GUICtrlSetData($EmailBody, " ")
    ElseIf GetAuthorized() Then
        GUICtrlSetData($EmailCount, ($CurrentMessage + 1) & " / " & GetCount())
        GUICtrlSetData($EmailTitle, "Title: " & GetEmailTitle($CurrentMessage))
        GUICtrlSetData($EmailFromName, "Author: " & GetEmailName($CurrentMessage))
        GUICtrlSetData($EmailFromEmail, "Email: " & GetEmailEmail($CurrentMessage))
        GUICtrlSetData($EmailBody, GetEmailSummary($CurrentMessage))
$texte= GetEmailName($CurrentMessage)
    Else
        GUICtrlSetData($EmailCount, " ")
        GUICtrlSetData($EmailTitle, " ")
        GUICtrlSetData($EmailFromName, " ")
        GUICtrlSetData($EmailFromEmail, " ")
        GUICtrlSetData($EmailBody, " ")
    EndIf

EndFunc   ;==>SetEmailText

Func LeftArrowPressed()
    If $CurrentMessage + 1 > 1 Then
        $CurrentMessage -= 1
        SetEmailText()
    EndIf
EndFunc   ;==>LeftArrowPressed

Func RightArrowPressed()
    If $CurrentMessage + 1 < GetCount() Then
        $CurrentMessage += 1
        SetEmailText()
    EndIf
EndFunc   ;==>RightArrowPressed


Func go_to_email()

$ie = _IECreate("https://www.google.com/accounts/ServiceLogin?service=mail&passive=true&rm=false&continue=http%3A%2F%2Fmail.google.com%2Fmail%2F%3Fhl%3Dfr%26tab%3Dwm%26ui%3Dhtml%26zy%3Dl&bsv=1eic6yu9oa4y3&scc=1&ltmpl=default&ltmplcache=2&hl=fr")
;WinSetState(_IEPropertyGet ($ie, "hwnd" ), "",@SW_MAXIMIZE )

$o_form = _IEFormGetObjByName($ie, "gaia_loginform")
$o_login = _IEFormElementGetObjByName($o_form, "Email")
$o_password = _IEFormElementGetObjByName($o_form, "Passwd")
_IEFormElementSetValue($o_login, $Username)
_IEFormElementSetValue($o_password, $Password)
_IEFormSubmit($o_form,0)


EndFunc
 
Comme indiqué plus haut, le post original et l'udf Gmail.au3 sont ici =
http://www.autoitscript.com/forum/topic ... l-checker/
Ce script est juste une ébauche, j'ai stoppé son développement en attendant de résoudre mon problème, par la suite je rendrai le Gui invisible, il ne se manifestera que lorsqu'un nouvel email sera arrivé et me donnera la possibilité d' acquitter simplement, d'ignorer ou de consulter l'email.
Cut, srcipteur du dimanche...désolé !-)
Avatar du membre
bloodwolff
Membre émérite
Membre émérite
Messages : 655
Enregistré le : ven. 18 avr. 2008 22:36
Localisation : Québec
Status : Hors ligne

Re: [..] UDF GMAIL.au3

#6

Message par bloodwolff »

J'ai regarder vite fait ,je pense que sa pourrait être possible de trouver le lien directement dans le code source
La structure de chaque message ressemble à un truc du genre
,["tb",0,[["12c74cecdb5b9cb5","12c74cecdb5b9cb5","12c74cecdb5b9cb5",0,0,["^all","^i"]
,["^all","^i"]
,"\u003cspan class\u003d\"zF\" email\u003d\"mail-noreply@google.com\"\u003eL'équipe Gmail\u003c/span\u003e","\u003cb\u003e\u0026raquo;\u003c/b\u003e\u0026nbsp;","\u003cb\u003eImportez vos contacts et anciens e-mails\u003c/b\u003e","Vous avez la possibilité d\u0026#39;importer vos contacts et vos messages à partir de Yahoo!, de \u0026hellip;",0,"","","\u003cb\u003e13:18\u003c/b\u003e","22 novembre 2010 13:18",1290449924107807,,[[["em"]
Avec une petite manipulation de string on pourrait le copier et il suffit de le rajouter au lien comme cela
deviens
Compte skype : bloodwolfff
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [..] UDF GMAIL.au3

#7

Message par cutprod »

Ha ouai !! Très bon :D , Je vais tester ça ce soir, je te tiens au courant!!
T'es toujours dans les bon coup toi :wink:
Cut, srcipteur du dimanche...désolé !-)
Avatar du membre
bloodwolff
Membre émérite
Membre émérite
Messages : 655
Enregistré le : ven. 18 avr. 2008 22:36
Localisation : Québec
Status : Hors ligne

Re: [..] UDF GMAIL.au3

#8

Message par bloodwolff »

► Afficher le texte
Voilà une ébauche .... très brouillon ... si elle peut t'aider tant mieux , elle fonctionne mais reste très lente et a un sleep que je n'ai pas pris le temps d'enlever si elle peut t'aider tant mieux

Si tu as besoin n'hésite pas
Modifié en dernier par bloodwolff le mar. 23 nov. 2010 03:07, modifié 2 fois.
Compte skype : bloodwolfff
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [..] UDF GMAIL.au3

#9

Message par cutprod »

J'y arrive pas!!
Quel version de IE a tu utiliser pour tes tests,car chez moi ça bloque donc j'ai afficher la variable $body et la surprise : ce n'est pas la même mise en page HTML ici il n'est pas question de retourner deux lignes en arrière pour trouver le code de l'url de l'email !!
Ça va être un peut plus dur!! Mais tu ma mis sur la voie et je t'en remercie,je vais batailler un peu et je vais bien y arriver :x
PS chez moi IE version 8.0.7600.....
PS.PS re-edit ton post au dessus t'as laissé ton login gmail,tu va te faire pourrir ta boite...
Cut, srcipteur du dimanche...désolé !-)
Avatar du membre
bloodwolff
Membre émérite
Membre émérite
Messages : 655
Enregistré le : ven. 18 avr. 2008 22:36
Localisation : Québec
Status : Hors ligne

Re: [..] UDF GMAIL.au3

#10

Message par bloodwolff »

Oui j'ai oublié d'enlever mes ID mais j'avais crée le compte que pour tester le script donc je m'en fou un peu ;)
Mais comme je l'ai dis c'étais vraiment brouillon , même si il aurait fonctionné chez toi il aurait fallu le modfier quand même
Dès que j'ai un peu de temps je regarde pour te pondre un script si tu n'y es toujours pas arrivé
Compte skype : bloodwolfff
Avatar du membre
bloodwolff
Membre émérite
Membre émérite
Messages : 655
Enregistré le : ven. 18 avr. 2008 22:36
Localisation : Québec
Status : Hors ligne

Re: [..] UDF GMAIL.au3

#11

Message par bloodwolff »

J'ai regarder un peu , le script fonctionne toujours chez moi mais plus de sleep et plus rapide
_IEBodyReadHTMl segmenter au @crlf retourne seulement 169 éléments comparé à 16 000 avec l'autre fonction
Teste ce nouveau script voir si le problème perciste

Code : Tout sélectionner

#include <Array.au3>
#include <IE.au3>
$titre = "Utilisez Gmail sur votre téléphone portable"
$user = "**********"
$pass = "**********"
$page = _IECreate("https://www.google.com/accounts/ServiceLogin?service=mail&passive=true&rm=false&continue=http%3A%2F%2Fmail.google.com%2Fmail%2F%3Fhl%3Dfr%26tab%3Dwm%26ui%3Dhtml%26zy%3Dl&bsv=1eic6yu9oa4y3&scc=1&ltmpl=default&ltmplcache=2&hl=fr",0,0)
$o_form = _IEFormGetObjByName($page, "gaia_loginform")
$o_login = _IEFormElementGetObjByName($o_form, "Email")
$o_password = _IEFormElementGetObjByName($o_form, "Passwd")
_IEFormElementSetValue($o_login, $user)
_IEFormElementSetValue($o_password, $pass)
_IEFormSubmit($o_form)
$body = _IEBodyReadHTML($page)
$split = StringSplit($body,@CRLF)
For $i=1 to $split[0]
    if StringInStr($split[$i],$titre) Then
       $split = StringSplit($split[$i-2],'"')
       ExitLoop
    EndIf
Next
For $i=1 to $split[0]
    if StringLen($split[$i]) = 16 Then
        $mail = $split[$i]
    EndIf
Next
$url = _IEPropertyGet($page,"locationurl") & "/" & $mail
_IENavigate($page, $url)
WinSetState(_IEPropertyGet ($page, "hwnd" ), "",@SW_MAXIMIZE )
_IEAction($page,"visible")
Compte skype : bloodwolfff
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] UDF GMAIL.au3

#12

Message par pierrotm777 »

Je ne sais pas si cela peut vous intéresser mais j'avais trouvé cela sur le forum et l'avais adapté à Gmail !
Fichiers joints
GMAIL_pop_mail_alert.zip
(615.64 Kio) Téléchargé 114 fois
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [..] UDF GMAIL.au3

#13

Message par cutprod »

Merci pierrotm777, je vais regarder.
bloodwolff, ton code fonctionne très bien, hier je l' avais adapter chez moi et "retourner" dans tous les sens, même testé les autre fonction comme "_IEBodyReadHTML" mais le problème ne vient pas de la!! Maintenant c'est l'encodage des caractères qui bugue, voici chez moi la valeur que prend la variable $titre =
Lettre d'info de l'énergie solaire - Novembre 2010
au lieu de =
Lettre d'info de l'énergie solaire - Novembre 2010
Problème soulever par pierrotm777 dans un de ces post sur le sujet.
Je cherche...
Merci a toi bloodwolff :D
Cut, srcipteur du dimanche...désolé !-)
pierrotm777
Membre émérite
Membre émérite
Messages : 770
Enregistré le : sam. 11 oct. 2008 14:44
Localisation : Bordeaux
Status : Hors ligne

Re: [..] UDF GMAIL.au3

#14

Message par pierrotm777 »

pour l'apostrophe, j'utilise un traitement :
► Afficher le texte
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [R] UDF GMAIL.au3

#15

Message par cutprod »

Je le passe en [R] pour l'instant, je travail sur le projet tranquillement et je le post plus tard!
Merci a bloodwolff pour son aide précieuse.
Et a pierrotm777 pour sa participation.
Cut, srcipteur du dimanche...désolé !-)
Avatar du membre
bloodwolff
Membre émérite
Membre émérite
Messages : 655
Enregistré le : ven. 18 avr. 2008 22:36
Localisation : Québec
Status : Hors ligne

Re: [R] UDF GMAIL.au3

#16

Message par bloodwolff »

Voilà avec un regexp

Code : Tout sélectionner

$split = StringSplit($body,@CRLF)
For $i=1 to $split[0]
    if StringInStr($split[$i],$titre) Then
       $split = StringSplit($split[$i-2],'"')
       ExitLoop
    EndIf
Next
For $i=1 to $split[0]
    if StringLen($split[$i]) = 16 Then
        $mail = $split[$i]
    EndIf
Next
$url = _IEPropertyGet($page,"locationurl") & "/" & $mail
Deviens

Code : Tout sélectionner

$titre = StringRegExpReplace($titre, "([|\.?*+^$])", "\\$1")
$tab = StringRegExp($body, '.+?(?:"([[:alnum:]]+)",){3}(?:.+?\n|\s){2}.+?' & $titre, 3)
$url = _IEPropertyGet($page,"locationurl") & "/" & $tab[0]
m.... il fonctionnait avec mon texte d'exemple mais bloque avec le site , je r`gle sa le plus tôt possible :O
PS: Corrigé , mode drastique mais qui fonctionne ;)
Compte skype : bloodwolfff
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [R] UDF GMAIL.au3

#17

Message par cutprod »

Merci pour la mise a jour, je vais l'intégrer :D
Je dois avouer que j'ai un peu lâcher l'affaire avec ce script...
Mais c'est pas perdu, je vais tester!
Cut, srcipteur du dimanche...désolé !-)
Répondre