Code : Tout sélectionner
#include <Inet.au3>
#include <IE.au3>
Global Const $UTILISATEUR_HOTMAIL = "orax@hotmail.com"
Global Const $MOT_DE_PASSE_HOTMAIL = "mouarf"
Global Const $UTILISATEUR_GMAIL = "orax@hotmail.com"
Global Const $MOT_DE_PASSE_GMAIL = "mouarf"
Global Const $URL_HOTMAIL = "http://mail.live.com/?rru=inbox"
Global Const $URL_GMAIL = "http://mail.google.com/mail/h/"
Global $dbg = True ; déboguage...
Global $urlMessages_hotmail
Global $urlMessages_gmail
; boucle principale
While 1
uhuh()
Sleep(60 * 1000 * 15) ; 15 mins
WEnd
Func uhuh()
Local $nbMessages, $msg
If $dbg Then ConsoleWrite(@CRLF & "+> Vérifie les messages sur Hotmail :" & @CRLF)
$nbMessages = verifieMessages_hotmail()
If $nbMessages Then $msg = $nbMessages & " messages sur hotmail !" & @CRLF
If $dbg Then ConsoleWrite(@CRLF & "+> Vérifie les messages sur Gmail :" & @CRLF)
$nbMessages = verifieMessages_gmail()
If $nbMessages Then $msg &= $nbMessages & " messages sur gmail !" & @CRLF
If $nbMessages Then TrayTip("Nouveau messages", $msg, 5000, 1)
EndFunc ;==>uhuh
Func verifieMessages_hotmail()
Local $nbMessages
Local $urlMessages
$urlMessages = recupereUrlMessage_hotmail()
If Not $urlMessages Then
; si non authentifié alors on lance l'authentification
authentification_hotmail()
$urlMessages = recupereUrlMessage_hotmail()
If @error Or Not $urlMessages Then
ConsoleWriteError(@ScriptLineNumber)
Exit -1
EndIf
EndIf
; récupère le code source de l'adresse de base des messages
$html = ouvreUrl($urlMessages)
; récupère le nombre de messages
$expReg = StringRegExp($html, _
'(?i)<div\s+class="PageNavigationMsgRange">\s*(\d+)\s+messages\s*</div>', _
3)
If Not UBound($expReg) Then
; non connecté
MsgBox(0, "Erreur", "Probablement non connecté")
Exit -1
Else
$nbMessages = $expReg[0]
EndIf
Return $nbMessages
EndFunc ;==>verifieMessages_hotmail
Func verifieMessages_gmail()
Local $nbMessages
Local $urlMessages
$urlMessages = recupereUrlMessage_gmail()
If Not $urlMessages Then
; si non authentifié alors on lance l'authentification
authentification_gmail()
$urlMessages = recupereUrlMessage_gmail()
If @error Or Not $urlMessages Then
ConsoleWriteError(@ScriptLineNumber)
Exit -1
EndIf
EndIf
; récupère le code source de l'adresse de base des messages
$html = ouvreUrl($urlMessages, 1)
; récupère le nombre de messages
$expReg = StringRegExp($html, _
'(?i)<a\s+href="\?"\s+accesskey="i">\s*Bo..?te\s+de\s+r..?ception \((\d+)\)\s*</a>', _
3)
If Not UBound($expReg) Then
; non connecté
MsgBox(0, "Erreur", "Probablement non connecté")
Exit -1
Else
$nbMessages = $expReg[0]
EndIf
Return $nbMessages
EndFunc ;==>verifieMessages_gmail
Func recupereUrlMessage_hotmail()
If $dbg Then dbg("recupereUrlMessage_hotmail", @ScriptLineNumber)
Local Const $pathExpReg = '(?i)<iframe\s+id="UIFrame"\s+onload="uiFrameLoad\(\)"\s+src="(http://[\w\.]+\.mail\.live\.com.*?)"'
Local $html, $expReg, $url = $URL_HOTMAIL
; récupère le code source de la page
If $urlMessages_hotmail Then
If $dbg Then dbg("recupere code source via _INetGetSource à " & $urlMessages_hotmail, @ScriptLineNumber)
$html = _INetGetSource($urlMessages_hotmail)
; récupère l'URL des messages
$expReg = StringRegExp($html, $pathExpReg, 3)
If Not UBound($expReg) Then
; si l'URL des messages $urlMessages_... n'était pas la bonne
; alors il faut la récupérer
If $dbg Then dbg("le code source via _INetGetSource n'a pu être récupérer ; tente de récupérer l'URL", @ScriptLineNumber)
ouvreUrl($url)
$urlMessages_hotmail = $url
EndIf
Else
$html = ouvreUrl($url)
$urlMessages_hotmail = $url
EndIf
; récupère l'URL des messages
If Not UBound($expReg) Then
$expReg = StringRegExp($html, $pathExpReg, 3)
If Not UBound($expReg) Then
; non connecté
ConsoleWriteError("Probablement non connecté (hotmail)" & @CRLF)
Return SetError(1, "", "")
EndIf
EndIf
$url = codageHtmlVersTxt($expReg[0])
Return $url
EndFunc ;==>recupereUrlMessage_hotmail
Func authentification_hotmail()
If $dbg Then dbg("authentification_hotmail", @ScriptLineNumber)
Local $oIE = _IECreateEmbedded()
Local $gui = GUICreate("", 0, 0)
Local $GUIActiveX = GUICtrlCreateObj($oIE, 0, 0, 0, 0)
_IENavigate($oIE, "https://login.live.com/")
Local $o_form = _IEFormGetObjByName($oIE, "f1")
Local $o_login = _IEFormElementGetObjByName($o_form, "login")
Local $o_password = _IEFormElementGetObjByName($o_form, "passwd")
Local $o_signin = _IEFormElementGetObjByName($o_form, "SI")
_IEFormElementRadioSelect($o_form, "1", "LoginOptions") ; coche "Mémoriser mon adresse de messagerie et mon mot de passe"
_IEFormElementSetValue($o_login, $UTILISATEUR_HOTMAIL)
_IEFormElementSetValue($o_password, $MOT_DE_PASSE_HOTMAIL)
_IEAction($o_signin, "click")
_IELoadWait($oIE)
GUIDelete($gui)
EndFunc ;==>authentification_hotmail
Func recupereUrlMessage_gmail()
If $dbg Then dbg("recupereUrlMessage_gmail", @ScriptLineNumber)
Local Const $urlDefaut = "http://mail.google.com/"
Local $html, $expReg, $url = $URL_GMAIL
; récupère le code source de la page
If $urlMessages_gmail Then
If $dbg Then dbg("recupere code source via _INetGetSource à " & $urlMessages_gmail, @ScriptLineNumber)
$html = _INetGetSource($urlMessages_gmail)
; vérifie que l'URL des messages est bonne
If StringLeft($url, StringLen($urlDefaut)) <> $urlDefaut Then
; si l'URL des messages $urlMessages_... n'était pas la bonne
; alors il faut la récupérer
If $dbg Then dbg("le code source via _INetGetSource n'a pu être récupérer ; tente de récupérer l'URL", @ScriptLineNumber)
$html = ouvreUrl($url, 1)
$urlMessages_gmail = $url
EndIf
Else
$html = ouvreUrl($url, 1)
$urlMessages_gmail = $url
EndIf
; récupère le code source de la page
$html = ouvreUrl($url, 1)
; vérifie que l'URL des messages est bonne
If StringLeft($url, StringLen($urlDefaut)) <> $urlDefaut Then
; non connecté
ConsoleWriteError("Probablement non connecté (gmail)" & @CRLF)
Return SetError(1, "", "")
EndIf
Return $url
EndFunc ;==>recupereUrlMessage_gmail
Func authentification_gmail()
If $dbg Then dbg("authentification_gmail", @ScriptLineNumber)
Local $oIE = _IECreateEmbedded()
Local $gui = GUICreate("", 0, 0)
Local $GUIActiveX = GUICtrlCreateObj($oIE, 0, 0, 0, 0)
_IENavigate($oIE, "https://www.google.com/accounts/ServiceLogin?service=mail")
Local $o_gaia_loginform = _IEFormGetObjByName($oIE, "gaia_loginform")
Local $o_email = _IEFormElementGetObjByName($o_gaia_loginform, "Email")
Local $o_passwd = _IEFormElementGetObjByName($o_gaia_loginform, "Passwd")
Local $o_signin = _IEFormElementGetObjByName($o_gaia_loginform, "signIn")
_IEFormElementSetValue($o_email, $UTILISATEUR_GMAIL)
_IEFormElementSetValue($o_passwd, $MOT_DE_PASSE_GMAIL)
_IEAction($o_signin, "click")
_IELoadWait($oIE)
GUIDelete($gui)
EndFunc ;==>authentification_gmail
Func ouvreUrl(ByRef $url, $nbRedirections = 0)
If $dbg Then dbg("ouvreUrl " & $url & " " & $nbRedirections, @ScriptLineNumber)
Local $html, $i = 1, $expReg
While 1
; récupère le code source
$html = _INetGetSource($url)
; vérifie s'il y a une redirection
$expReg = StringRegExp($html, '(?i)<base\s+href=["''](.*?)["'']/?>', 3)
If UBound($expReg) Then
If $expReg[0] = $url Then
ExitLoop
Else
; spécifie la nouvelle URL
$url = $expReg[0]
EndIf
Else
ExitLoop
EndIf
If $nbRedirections And $nbRedirections = $i Then ExitLoop
$i += 1
Sleep(10)
WEnd
Return $html
EndFunc ;==>ouvreUrl
; peut être amélioré je pense...
Func codageHtmlVersTxt($codeHtml)
Local $i
Local $expReg = StringRegExp($codeHtml, "\&\#(\d+);", 3)
For $i = 0 To UBound($expReg) - 1
$codeHtml = StringReplace($codeHtml, _
"&#" & $expReg[$i] & ";", _
Chr($expReg[$i]), _
1)
Next
Return $codeHtml
EndFunc ;==>codageHtmlVersTxt
Func dbg($msg, $scriptLineNumber)
ConsoleWrite("(" & $scriptLineNumber & ") : " & $msg & @CRLF)
EndFunc ;==>dbg