Code : Tout sélectionner
; Ce script à pour but :
; 1) De sélectionner automatiquement le destinataire du message en fonction du nom du client saisi dans le sujet et le corps du message
; 2) Afin d'éviter toute erreur d'envoi (mauvais destinataire.
; 3) Il ne fonctionne que sous outlook 2000 et 2003
; 4) Il envoi les mails au travers de outlook et ainsi les mails envoyés sont stockés dans la partie "messages envoyés"
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <outlook.au3>
#include <Array.au3>
#include "_XMLDomWrapper.au3" ; xml
#Region ### START Koda GUI section ### Form=f:\developpement\reseau\detourage\envoi_mail_securise\form1.kxf
$Form1_1 = GUICreate("Envoi de mail avec validation", 756, 352, 203, 115, BitOR($WS_MINIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_SYSMENU,$WS_CAPTION,$WS_POPUP,$WS_POPUPWINDOW,$WS_GROUP,$WS_BORDER,$WS_CLIPSIBLINGS))
$Ipt_Contact = GUICtrlCreateInput("", 120, 32, 569, 21)
GUICtrlSetState(-1, $GUI_DISABLE)
$Ipt_Sujet = GUICtrlCreateInput("", 120, 64, 569, 21)
$Edit_Message = GUICtrlCreateEdit("", 120, 96, 569, 169)
GUICtrlSetData(-1, "")
$Ipt_PJ = GUICtrlCreateInput("", 120, 272, 569, 21)
GUICtrlSetState(-1, $GUI_DISABLE)
$Label1 = GUICtrlCreateLabel("Contact (s)", 24, 32, 87, 23)
GUICtrlSetFont(-1, 12, 800, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)
$Label2 = GUICtrlCreateLabel("Sujet", 24, 61, 43, 23)
GUICtrlSetFont(-1, 12, 800, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)
$Label3 = GUICtrlCreateLabel("Message", 24, 95, 72, 23)
GUICtrlSetFont(-1, 12, 800, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)
$Label4 = GUICtrlCreateLabel("P.J", 25, 270, 28, 23)
GUICtrlSetFont(-1, 12, 800, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)
$Icon_Erreur = GUICtrlCreateIcon("F:\DEVELOPPEMENT\RESEAU\Envoi_mail_securise\attention.ico", 0, 704, 82, 32, 32, BitOR($SS_NOTIFY,$WS_GROUP))
GUICtrlSetState($Icon_Erreur, $GUI_HIDE)
$Icon_PJ = GUICtrlCreateIcon("F:\DEVELOPPEMENT\RESEAU\Envoi_mail_securise\dossiers.ico", 0, 703, 268, 32, 32, BitOR($SS_NOTIFY,$WS_GROUP))
$Btn_Envoyer = GUICtrlCreateButton("Envoyer", 176, 312, 91, 25, 0)
$Btn_Quitter = GUICtrlCreateButton("Quitter", 552, 312, 91, 25, 0)
$Btn_ListeClients = GUICtrlCreateButton("Liste clients", 368, 312, 91, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Global $AdresseComplete, $Adresse
$Subject = "Envoi du XX/XX/XXXX pour le client : "
$Message = "Bonjour," & @CRLF & @CRLF & Chr(9) & "Vous pouvez récupérer les XX images sur le serveur FTP client " & @CRLF & Chr(9) & "dans le répertoire : '/Retour_Images/Images_du_XX/XX/XXXX'" & @CRLF & @CRLF & @CRLF & "Merci et bonne récupération."
$PJ = ""
GUICtrlSetData($Ipt_Sujet, $Subject)
GUICtrlSetData($Edit_Message, $Message)
GUICtrlSetData($Ipt_PJ, $PJ)
$sFileXML = "\\frejus03\Projets\Xml\ConfClient.xml"
Local $TableauClients[1]
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Btn_Envoyer
; Réinitialisation de l'affichage en cas d'erreur
GUICtrlSetState($Icon_Erreur, $GUI_HIDE)
;~ dim $Array_Client[1]=["Liste des clients"]
$ValidationMail = False
$Subject = GUICtrlRead($Ipt_Sujet)
$Message = GUICtrlRead($Edit_Message)
$ret = _XMLFileOpen ($sFileXML)
For $i= 1 to _XMLGetNodeCount("//client") Step 1
$NomClient = _XMLGetAttrib("/configuration/clients/client[" & $i & "]", "nom") ; Liste de tous les clients du détourage
; Recherche du nom du client dans le sujet et dans le corps du message
$ComparaisonSubject = StringInStr($Subject, $NomClient)
$ComparaisonMessage = StringInStr($Message, $NomClient)
If $ComparaisonSubject <> 0 And $ComparaisonMessage <> 0 Then ; Test si le nom du client a été saisi dans les 2 champs
$ValidationMail = True
$AdresseComplete = ""
$Adresse = ""
$CHILDTEST=_XMLGetChildText("/configuration/clients/client[" & $i & "]")
$nbnode_mail=_XMLGetNodeCount("/configuration/clients/client[" & $i & "]/mail")
for $j=_XMLGetNodeCount("/configuration/clients/client[" & $i & "]/mail") to 1 Step -1 ; Récupère les mails du clients en partant du dernier
$Adresse=_XMLGetAttrib("/configuration/clients/client[" & $i & "]/mail[" & $j & "]","adresse") ; Liste le mail du client
; Affichage de toutes les adresses de contact
If $nbnode_mail > 1 Then
$AdresseComplete = $AdresseComplete & ";" & $Adresse
Else
$AdresseComplete = $Adresse
EndIf
Next
If StringLeft($AdresseComplete, 1) = ";" Then $AdresseComplete = StringTrimLeft($AdresseComplete,1)
GUICtrlSetData($Ipt_Contact, $AdresseComplete)
ExitLoop
EndIf
Next
;$Adresse = _XMLGetAttrib("/configuration/clients/client[" & $i & "]/mail", "adresse") ; Récupération uniquement de la derniere @mail
; Test si le nombre d'images ou la date ont été saisies
$ComparaisonSubject = StringInStr($Subject, "XX")
$ComparaisonMessage = StringInStr($Message, "XX")
If $ComparaisonSubject <> 0 Or $ComparaisonMessage <> 0 Then $ValidationMail = "Erreur"
If $ValidationMail == True Then
; Envoi du mail
If $AdresseComplete <> "" Then
$oOutlook = _OutlookOpen()
_OutlookSendMail($oOutlook, $AdresseComplete, "", "", $Subject, $Message, "", $olFormatHTML, "", @ScriptDir & "\OutlookWarning1.exe")
; Prévenir l'utilisateur
MsgBox(64,"Information", "Votre mail a été correctement envoyé.",4)
; Réinitialisation
GUICtrlSetData($Ipt_Contact, "")
$Subject = "Envoi du XX/XX/XXXX pour le client : "
$Message = "Bonjour," & @CRLF & @CRLF & Chr(9) & "Vous pouvez récupérer les XX images sur le serveur FTP client " & @CRLF & Chr(9) & "dans le répertoire : '/Retour_Images/Images_du_XX/XX/XXXX'" & @CRLF & @CRLF & @CRLF & "Merci et bonne récupération."
$PJ = ""
GUICtrlSetData($Ipt_Sujet, $Subject)
GUICtrlSetData($Edit_Message, $Message)
GUICtrlSetData($Ipt_PJ, $PJ)
EndIf
ElseIf $ValidationMail == "Erreur" Then
; Gestion d'erreur
GUICtrlSetState($Icon_Erreur, $GUI_SHOW)
Chr(7)
GUICtrlSetData($Ipt_Contact, "")
MsgBox(16, "Erreur", "La date ou le nombre d'images n'ont pas été saisies dans le sujet et/ou le corps du message." & @CRLF & "Veuillez corriger votre saisie.")
Else
; Gestion d'erreur
GUICtrlSetState($Icon_Erreur, $GUI_SHOW)
Chr(7)
GUICtrlSetData($Ipt_Contact, "")
MsgBox(16, "Erreur", "Le nom du client n'a pas été saisi ou mal orthographié dans le sujet et/ou le corps du message." & @CRLF & "Veuillez corriger votre saisie.")
EndIf
Case $Btn_Quitter
Exit
Case $Btn_listeClients
dim $Array_Client[1]=["Liste des clients"]
$ret = _XMLFileOpen ($sFileXML)
For $i= 1 to _XMLGetNodeCount("//client") Step 1
$NomClient = _XMLGetAttrib("/configuration/clients/client[" & $i & "]", "nom")
_ArrayAdd($Array_Client, $NomClient)
Next
_ArraySort($Array_Client,0,1)
_ArrayDisplay($Array_Client, "Liste des clients du détourage")
EndSwitch
WEnd
Si je sors le code d'envoi du mail de ma boucle while, cela fonctionne. Sinon le mail part mais il m'annonce que le handle est déjà ouvert et la je ne vois pas ou !!!!!