Je l'ai francisé, mais je me suis aperçu , en ajoutant un son pour la notification de nouveau mail, que le programme me disais toujours que j'avais de nouveaux mails (même qd j'en ai pas).
Il doit y avoir une erreur de logique dans les conditions, mais je ne trouve pas.
En tout cas, ce script est une super initiative, félicitons son créateur:
http://www.autoitscript.com/forum/index ... opic=21820
► Afficher le textepour le code
Code : Tout sélectionner
#include <GUIConstants.au3>
#include <String.au3>
#NoTrayIcon
;Opt("TrayOnEventMode",1)
opt("TrayMenuMode", 1)
;décommenter la ligne suivante pour introduire un fichier son
FileInstall("c:\ressources\mail.wav", @ScriptDir & "\mail.wav", 1)
Dim $acc_1[100], $acc_2[100], $acc_3[100], $acc_4[100], $messagecnt[100], $labeln[100], $editbt[100], $delbt[100], $stringtl[100], $indicator[100], $indicator2[100], $msgnew[100], $msgrecount[100]
Global $line = 1, $text, $messagecnt, $text2, $top, $num, $msgedit, $editm, $rt, $mainopt, $error, $rt2, $linecount, $editacc, $reserv, $num2, $number, $msgrcv2, $number2
Global $msgc, $msgrcv = 7, $msgrecount = -1, $text3, $newm
TraySetIcon("Shell32.dll",156)
$traymenu3 = TrayCreateItem ("Comptes & Options")
TrayCreateItem ("")
$traymenu1 = TrayCreateItem ("Verifier ma boite maintenant")
TrayCreateItem ("")
$traymenu2 = TrayCreateItem ("Fermer")
TraySetState ()
$client_mail1 = TrayCreateItem("Mozilla Thunderbird")
TrayItemSetOnEvent(-1,"OpenThunderbird")
$client_mail2 = TrayCreateItem("Outlook Express")
TrayItemSetOnEvent(-1,"OpenOutlook")
Func OpenOutlook()
run("c:\Program Files\Outlook Express\msimn.exe")
EndFunc
Func OpenThunderbird()
run("C:\Program Files\Mozilla Thunderbird\thunderbird.exe")
EndFunc
$pass = InputBox("Mdp Superviseur", "Entrez votre mot de passe:", "", "*M", 200, 120, -1, -1)
If @error = 1 Then Exit
Do
$linecount = $linecount + 1
$mfile = FileReadLine(@ScriptDir & "\accounts.ini", $line)
$stringtr = StringTrimRight($mfile, 1)
$stringtl[$linecount] = StringTrimLeft($stringtr, 1)
$line = $line + 5
Until $stringtl[$linecount] = ""
$accountc = (($line - 1) / 5) - 1
$reserv = $accountc
$hightcount = $reserv
$accountc = $reserv
If $accountc = 0 Then addaccount()
$rt = 0
$accountc = $reserv
Do
$acc_1[$accountc] = IniRead(@ScriptDir & "\accounts.ini", $stringtl[$accountc], "user", "empty")
$acc_2[$accountc] = IniRead(@ScriptDir & "\accounts.ini", $stringtl[$accountc], "pass", "empty")
$acc_3[$accountc] = IniRead(@ScriptDir & "\accounts.ini", $stringtl[$accountc], "server", "empty")
$acc_4[$accountc] = IniRead(@ScriptDir & "\accounts.ini", $stringtl[$accountc], "accountname", "empty")
$accountc = $accountc - 1
Until $accountc < 1
AdlibEnable("start", 1800000)
Start()
$accountc = $reserv
While 2
$msg = TrayGetMsg ()
Select
Case $msg = $traymenu2
Exit
Case $msg = $traymenu1
If $hightcount < 1 Then addaccount()
$rt = 0
Start()
Case $msg = $traymenu3
option()
EndSelect
WEnd
Func Start()
If $hightcount < 1 Then Return
$text2 = ""
$text = ""
$text3 = ""
$newm = 0
$error = 0
$accountc = $reserv
If $msgrecount = 2 Then
$msgrecount = 1
Else
$msgrecount = $msgrecount + 1
EndIf
Do
If $acc_1[$accountc] <> "erased" And $acc_2[$accountc] <> "erased" And $acc_3[$accountc] <> "erased" And $acc_4[$accountc] <> "erased" Then
$messagecnt[$accountc] = _mailchk($acc_3[$accountc], $acc_1[$accountc], _StringEncrypt(0, $acc_2[$accountc], $pass, 5))
EndIf
$msgnew[$accountc & $msgrecount] = $messagecnt[$accountc]
Sleep(1000)
$accountc = $accountc - 1
Until $accountc < 1
If $error = $hightcount Then
MsgBox(4112, "Erreur MDP", "Erreur d'authentification.")
$pass = InputBox("Mdp Superviseur", "Entrez votre mot de passe:", "", "*M", 200, 120, -1, -1)
If @error = 1 Then
Exit
Else
MsgBox(64, "Mdp Superviseur", "Verifiez vos e-mail à partir du menu.", 15)
Return
EndIf
EndIf
If $msgrecount < 1 Then
$text = "Vous avez: " & @CRLF
$accountc = $reserv
Do
If $acc_1[$accountc] <> "erased" And $acc_2[$accountc] <> "erased" And $acc_3[$accountc] <> "erased" And $acc_4[$accountc] <> "erased" Then
$text2 = $text2 & $messagecnt[$accountc] & " mail(s) dans votre Boîte : " & $acc_4[$accountc] & @CRLF
EndIf
$accountc = $accountc - 1
Until $accountc < 1
TrayTip("Total E-mail", $text & $text2, 20, 1)
SoundPlay(@ScriptDir & "\mail.wav")
Else
$text = "Vous avez: " & @CRLF
$accountc = $reserv
Do
If $msgnew[$accountc & (- ($msgrecount - 3)) ] = 0 Then
$msgnew[$accountc & (- ($msgrecount - 3)) ] = $msgnew[$accountc & $msgrecount]
EndIf
If $acc_1[$accountc] <> "erased" And $acc_2[$accountc] <> "erased" And $acc_3[$accountc] <> "erased" And $acc_4[$accountc] <> "erased" Then
$text2 = $text2 & $msgnew[$accountc & $msgrecount] - $msgnew[$accountc & (- ($msgrecount - 3)) ] & " mail(s) dans votre Boîte : " & $acc_4[$accountc] & @CRLF
EndIf
$newm = $newm + ($msgnew[$accountc & $msgrecount] - $msgnew[$accountc & (- ($msgrecount - 3)) ])
$accountc = $accountc - 1
Until $accountc < 1
$accountc = $reserv
Do
If $acc_1[$accountc] <> "erased" And $acc_2[$accountc] <> "erased" And $acc_3[$accountc] <> "erased" And $acc_4[$accountc] <> "erased" Then
$text3 = $text3 & $messagecnt[$accountc] & " mail(s) dans votre Boîte : " & $acc_4[$accountc] & @CRLF
EndIf
$accountc = $accountc - 1
Until $accountc <1> 0 Then
TrayTip("Nouveaux E-mail", $text & $text2, 20, 1)
SoundPlay(@ScriptDir & "\mail.wav")
Sleep(10000)
TrayTip("", "", 1)
TrayTip("Total E-mail", $text & $text3, 20, 1)
Else
TrayTip("Total E-mail", $text & $text3, 20, 1)
SoundPlay(@ScriptDir & "\mail.wav")
EndIf
EndIf
Return
EndFunc
Func option()
If $hightcount < 1 Then addaccount()
$hight = 40 * $hightcount
$editm = GUICreate("Modifier compte", 300, $hight + 80, -1, -1)
$menu = GUICtrlCreateMenu("Ajouter Compte")
$addmenuacc = GUICtrlCreateMenuItem("Ajouter compte", $menu, 1)
$changetimer = GUICtrlCreateMenuItem("Vérifier toutes les...", $menu, 2)
$top = 0
$num = 0
$accountc = $reserv
$msgrcv = 8
$msgrcv2 = 7
Do
Select
Case $acc_1[$accountc] <> "erased" And $acc_2[$accountc] <> "erased" And $acc_3[$accountc] <> "erased" And $acc_4[$accountc] <> "erased"
$top = $top + 40
$num = $num + 1
$labeln[$msgrcv] = GUICtrlCreateLabel($num & ". " & $acc_4[$accountc], 40, $top, 110, 60)
$indicator[$msgrcv] = $accountc
$indicator2[$msgrcv2] = $accountc
$editbt[$msgrcv2] = GUICtrlCreateButton("Modifier", 160, $top - 4, 60, 20)
$delbt[$msgrcv] = GUICtrlCreateButton("Supprimer", 230, $top - 4, 60, 20)
$msgrcv = $msgrcv + 3
$msgrcv2 = $msgrcv2 + 3
EndSelect
$accountc = $accountc - 1
Until $accountc <1> 0
chkmsg()
Case $rt = 1
GUIDelete($editacc)
GUIDelete($editm)
$rt = 0
ExitLoop
Case $rt2 = 1
GUIDelete($editacc)
GUIDelete($editm)
$rt2 = 0
ExitLoop
EndSelect
WEnd
Return
EndFunc
Func chkmsg()
$accountc = $reserv
$msgrcv = $number
$msgrcv2 = $number2
Do
Select
Case $msgc = $editbt[$msgrcv2]
$accountc = $indicator2[$msgrcv2]
GUISetState(@SW_HIDE, $editm)
$editacc = GUICreate("Paramètres du compte", 280, 230, -1, -1)
$accname = GUICtrlCreateLabel("Nom du compte", 20, 20, 100, 40)
$accnameibox = GUICtrlCreateInput($acc_4[$accountc], 120, 18, 140, 20)
$accserver = GUICtrlCreateLabel("Adresse du serveur", 20, 60, 100, 40)
$accserveribox = GUICtrlCreateInput($acc_3[$accountc], 120, 58, 140, 20)
$accuser = GUICtrlCreateLabel("Identifiant", 20, 100, 100, 40)
$accuseribox = GUICtrlCreateInput($acc_1[$accountc], 120, 98, 140, 20)
$accpass = GUICtrlCreateLabel("Mot de passe", 20, 140, 100, 40)
$accpassibox = GUICtrlCreateInput("", 120, 138, 140, 20, $ES_PASSWORD)
$savebt = GUICtrlCreateButton("Sauvgarder", 15, 180, 120, 30)
$saveexitbt = GUICtrlCreateButton("Sauvegarder et Quitter", 148, 180, 120, 30)
GUISetState()
While 5
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
GUIDelete($editacc)
GUISetState(@SW_SHOW, $editm)
Return
Case $msg = $savebt
IniDelete(@ScriptDir & "\accounts.ini", $stringtl[$accountc])
$readname = GUICtrlRead($accnameibox)
$readserver = GUICtrlRead($accserveribox)
$readuname = GUICtrlRead($accuseribox)
$readpass = GUICtrlRead($accpassibox)
If $readpass = "" Then
MsgBox(4112, "Mdp incorrect", "Le mot de passe ne peut être vide")
GUIDelete($editacc)
GUISetState(@SW_SHOW, $editm)
Return
EndIf
$readpassenc = _StringEncrypt(1, $readpass, $pass, 5)
IniWrite(@ScriptDir & "\accounts.ini", "MAIL" & $readname, "accountname", $readname)
IniWrite(@ScriptDir & "\accounts.ini", "MAIL" & $readname, "server", $readserver)
IniWrite(@ScriptDir & "\accounts.ini", "MAIL" & $readname, "user", $readuname)
IniWrite(@ScriptDir & "\accounts.ini", "MAIL" & $readname, "pass", $readpassenc)
$acc_1[$accountc] = $readuname
$acc_2[$accountc] = $readpassenc
$acc_3[$accountc] = $readserver
$acc_4[$accountc] = $readname
$stringtl[$accountc] = "MAIL" & $readname
GUIDelete($editacc)
GUISetState(@SW_SHOW, $editm)
Return
Case $msg = $saveexitbt
IniDelete(@ScriptDir & "\accounts.ini", $stringtl[$accountc])
$readname = GUICtrlRead($accnameibox)
$readserver = GUICtrlRead($accserveribox)
$readuname = GUICtrlRead($accuseribox)
$readpass = GUICtrlRead($accpassibox)
If $readpass = "" Then
MsgBox(4112, "Mdp incorrect", "Le mot de passe ne peut être vide")
GUIDelete($editacc)
GUISetState(@SW_SHOW, $editm)
Return
EndIf
$readpassenc = _StringEncrypt(1, $readpass, $pass, 5)
IniWrite(@ScriptDir & "\accounts.ini", "MAIL" & $readname, "accountname", $readname)
IniWrite(@ScriptDir & "\accounts.ini", "MAIL" & $readname, "server", $readserver)
IniWrite(@ScriptDir & "\accounts.ini", "MAIL" & $readname, "user", $readuname)
IniWrite(@ScriptDir & "\accounts.ini", "MAIL" & $readname, "pass", $readpassenc)
$acc_1[$accountc] = $readuname
$acc_2[$accountc] = $readpassenc
$acc_3[$accountc] = $readserver
$acc_4[$accountc] = $readname
$stringtl[$accountc] = "MAIL" & $readname
GUIDelete($editacc)
GUIDelete($editm)
GUIDelete($mainopt)
$rt = 1
Return
EndSelect
WEnd
Case $msgc = $delbt[$msgrcv]
$accountc = $indicator[$msgrcv]
If $acc_1[$accountc] <> "erased" And $acc_2[$accountc] <> "erased" And $acc_3[$accountc] <> "erased" And $acc_4[$accountc] <> "erased" Then
IniDelete(@ScriptDir & "\accounts.ini", $stringtl[$accountc])
$acc_1[$accountc] = "erased"
$acc_2[$accountc] = "erased"
$acc_3[$accountc] = "erased"
$acc_4[$accountc] = "erased"
$stringtl[$accountc] = "erased"
$hightcount = $hightcount - 1
EndIf
GUIDelete($editacc)
GUIDelete($editm)
option()
$rt2 = 1
ExitLoop
EndSelect
$msgrcv = $msgrcv - 3
$msgrcv2 = $msgrcv2 - 3
$accountc = $accountc - 1
Until $accountc <1> 0 Then
GUISetState(@SW_SHOW, $editm)
Return
Else
GUIDelete($editm)
Return
EndIf
Case $msg = $addsavebt
$readname = GUICtrlRead($accnameibox)
$readserver = GUICtrlRead($accserveribox)
$readuname = GUICtrlRead($accuseribox)
$readpass = GUICtrlRead($accpassibox)
If $readpass = "" Then
MsgBox(4112, "Mot de passe incorrect", "Le mot de passe ne peut être vide")
GUIDelete($editacc)
GUISetState(@SW_SHOW, $editm)
Return
EndIf
$readpassenc = _StringEncrypt(1, $readpass, $pass, 5)
IniWrite(@ScriptDir & "\accounts.ini", "MAIL" & $readname, "accountname", $readname)
IniWrite(@ScriptDir & "\accounts.ini", "MAIL" & $readname, "server", $readserver)
IniWrite(@ScriptDir & "\accounts.ini", "MAIL" & $readname, "user", $readuname)
IniWrite(@ScriptDir & "\accounts.ini", "MAIL" & $readname, "pass", $readpassenc)
$acc_1[$reserv + 1] = $readuname
$acc_2[$reserv + 1] = $readpassenc
$acc_3[$reserv + 1] = $readserver
$acc_4[$reserv + 1] = $readname
$stringtl[$reserv + 1] = "MAIL" & $readname
GUIDelete($editacc)
GUIDelete($editm)
$reserv = $reserv + 1
$hightcount = $hightcount + 1
option()
$rt = 1
Return
Case $msg = $addsaveexitbt
$readname = GUICtrlRead($accnameibox)
$readserver = GUICtrlRead($accserveribox)
$readuname = GUICtrlRead($accuseribox)
$readpass = GUICtrlRead($accpassibox)
If $readpass = "" Then
MsgBox(4112, "Mot de passe incorrect", "Le mot de passe ne peut être vide")
GUIDelete($editacc)
GUISetState(@SW_SHOW, $editm)
Return
EndIf
$readpassenc = _StringEncrypt(1, $readpass, $pass, 5)
IniWrite(@ScriptDir & "\accounts.ini", "MAIL" & $readname, "accountname", $readname)
IniWrite(@ScriptDir & "\accounts.ini", "MAIL" & $readname, "server", $readserver)
IniWrite(@ScriptDir & "\accounts.ini", "MAIL" & $readname, "user", $readuname)
IniWrite(@ScriptDir & "\accounts.ini", "MAIL" & $readname, "pass", $readpassenc)
$acc_1[$reserv + 1] = $readuname
$acc_2[$reserv + 1] = $readpassenc
$acc_3[$reserv + 1] = $readserver
$acc_4[$reserv + 1] = $readname
$stringtl[$reserv + 1] = "MAIL" & $readname
GUIDelete($editacc)
GUIDelete($editm)
$rt = 1
$reserv = $reserv + 1
$hightcount = $hightcount + 1
Return
EndSelect
WEnd
EndFunc
Func timerchange()
AdlibDisable()
GUISetState(@SW_HIDE, $editm)
$timeenter = InputBox("Vérifier toutes les ...", "Temps en Minutes:", "30", "", 200, 120, -1, -1)
If @error = 1 Or $timeenter = "" Then
GUISetState(@SW_SHOW, $editm)
AdlibEnable("Start", 30 * 60000)
Return
EndIf
AdlibEnable("Start", $timeenter * 60000)
GUISetState(@SW_SHOW, $editm)
Return
EndFunc
;-------------------------------------------------------------------------------------------------------------------------
Func _mailchk($popsrv, $srvuser, $srvpass)
Global $mail, $i, $disp, $recv, $str, $count, $check, $str1, $err, $recpoint, $bit, $mcount, $recpoint1, $error
TCPStartup ()
Global $socket = TCPConnect (TCPNameToIP ($popsrv), 110)
If $socket = -1 Then
MsgBox(8240, 'Erreur', 'Erreur; impossible de se connecter au serveur mail ' & $popsrv, 5)
Return
EndIf
Do
$recv = TCPRecv ($socket, 512)
Until $recv <> ""
$recv = ""
TCPSend ($socket, "user " & $srvuser & @CRLF)
Do
$recv = TCPRecv ($socket, 512)
Until $recv <> ""
$recv = ""
TCPSend ($socket, "pass " & $srvpass & @CRLF)
Do
$recv = TCPRecv ($socket, 512)
Until $recv <err> 0 Then
MsgBox(4112, "Echec d'authentication", "Utilisateur ou mot de passe invalide pour : " & $popsrv, 8)
TCPSend ($socket, 'quit' & @CRLF)
TCPCloseSocket ($socket)
$error = $error + 1
Return
EndIf
$recv = ""
TCPSend ($socket, 'list' & @CRLF)
Do
$recv = TCPRecv ($socket, 10240)
$recpoint = StringInStr($recv, ".")
Sleep(1000)
Until $recpoint > 0
$str = StringSplit($recv, @LF)
$str1 = StringSplit($str[1], " ")
$check = StringIsDigit($str1[1])
If $check = 1 Then
$count = 0
$bit = 0
Else
$count = 1
$bit = 1
EndIf
Do
$count = $count + 1
$str1 = StringSplit($str[$count], " ")
$check = StringIsDigit($str1[1])
Until $check = 0
If $bit = 1 Then
$mcount = $count - 2
Else
$mcount = $count - 1
EndIf
TCPSend ($socket, 'quit' & @CRLF)
TCPCloseSocket ($socket)
Return $mcount
EndFunc