j'ai un souci lorsque j'utilise la fonction d'envoi de mail prise sur un autre post. Elle fonctionne sauf que cela ne se déroule pas correctement.
Dans mon script, je fais différentes vérifications. le résultat est inscrit dans trois fichiers textes différents.
Le problème est que la fonction d'envoi de mail ne démarre qu'à la fin du script. J'ai remarqué cela car je ne reçoit que le dernier fichier. Je pensais que cela venait de ma configuration des autres mais en fait non car si je n'envoie que le mail 1 cela marche, s'il y a les mails 1 puis 2, le 2 sera envoyé, 2 puis 1, le mail 1 sera envoyé...
Les paramètres sont gardés en mémoire et les derniers paramètres sont utilisés pour envoyer le mail à la fin du script.
J'espère que je suis clair
► Afficher le texte
Code : Tout sélectionner
#include <Array.au3>
#Include <WinAPI.au3>
#Include<file.au3>
#Include<inet.au3>
#NoTrayIcon
Global $s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_AttachFiles, $s_CcAddress, $s_BccAddress, $s_Username, $s_Password, $IPPort, $ssl
BlockInput(1)
msgbox (4096, "Debut", "Debut de la vérification de la Production. Merci de patienter, cela peut prendre quelques minutes", "5")
;Deverouillage de la session
XXXX
sleep("15000")
process()
Ecs()
Tours()
formatECS()
MailECS()
formatTOURS()
MailTOURS()
PingAgences()
MailAgences()
msgbox (4096, "Fin", "Fin de la vérification de la Production", "5")
;Verouillage de la session
;~ run("rundll32.exe user32.dll,LockWorkStation")
BlockInput(0)
func Process()
;Suppression des processus précédents non clos(prod.exe et emg.exe)
local $localpid
local $prod
Local $emg
$localpid = _WinAPI_GetCurrentProcessID()
$prod = ProcessList("prod.exe")
for $i = 1 to $prod[0][0]
if $prod[$i][1] <> $localpid Then
ProcessClose ($prod[$i][1])
EndIf
next
$emg = ProcessList("emg.exe")
for $i = 1 to $emg[0][0]
if $emg[$i][1] <> $localpid Then
ProcessClose ($emg[$i][1])
EndIf
next
EndFunc
func ECS()
;-----------------------------------------------------------CMD-ECS-----------------------------------------------------------------;
Endfunc
func TOURS()
;--------------------------------------------------------CMD-TOURS-----------------------------------------------------------------;
endfunc
func formatECS()
;-----------------------------------------------------FORMAT-ECS-------------------------------------------------------------------;
endfunc
func formatTOURS()
;-----------------------------------------------------FORMAT-TOURS------------------------------------------------------------------;
endfunc
func PingAgences()
;--------------------------------------------------------AGENCES---------------------------------------------------------------------;
endfunc
func MailECS()
$s_SmtpServer = "xxxx"
$s_FromName = "xxxx"
$s_FromAddress ="xxxx"
$s_ToAddress = "xxxx"
$s_Subject = "Rapport Journalier Agences 1"
$as_Body = FileRead("C:\Logs EMG\rapportjourAgences.txt")
$s_AttachFiles =""
$s_CcAddress =""
$s_BccAddress= ""
$s_Username=""
$s_Password=""
$IPPort=25
$ssl=0
_INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_AttachFiles ="", $s_CcAddress ="", $s_BccAddress= "", $s_Username="", $s_Password="", $IPPort="", $ssl="")
EndFunc
func MailTOURS()
$s_SmtpServer = "xxxx"
$s_FromName = "xxxx"
$s_FromAddress ="xxxx"
$s_ToAddress = "xxxx"
$s_Subject = "Rapport Journalier Agences 2"
$as_Body = FileRead("C:\Logs EMG\rapportjourAgences.txt")
$s_AttachFiles =""
$s_CcAddress =""
$s_BccAddress= ""
$s_Username=""
$s_Password=""
$IPPort=25
$ssl=0
_INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_AttachFiles ="", $s_CcAddress ="", $s_BccAddress= "", $s_Username="", $s_Password="", $IPPort="", $ssl="")
endfunc
Func MailAgences()
$s_SmtpServer = "xxxx"
$s_FromName = "xxx"
$s_FromAddress ="xxxx"
$s_ToAddress = "XXXX"
$s_Subject = "Rapport Journalier Agences 3"
$as_Body = FileRead("C:\Logs EMG\rapportjourAgences.txt")
$s_AttachFiles =""
$s_CcAddress =""
$s_BccAddress= ""
$s_Username=""
$s_Password=""
$IPPort=25
$ssl=0
_INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_AttachFiles ="", $s_CcAddress ="", $s_BccAddress= "", $s_Username="", $s_Password="", $IPPort="", $ssl="")
endfunc
Global $oMyRet[2]
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
$rc = _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_AttachFiles, $s_CcAddress, $s_BccAddress, $s_Username, $s_Password, $IPPort, $ssl)
If @error Then
MsgBox(0, "Error sending message", "Error code:" & @error & " Rc:" & $rc)
EndIf
;
Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Username = "", $s_Password = "",$IPPort=25, $ssl=0)
$objEmail = ObjCreate("CDO.Message")
$objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
$objEmail.To = $s_ToAddress
Local $i_Error = 0
Local $i_Error_desciption = ""
If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress
If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress
$objEmail.Subject = $s_Subject
If StringInStr($as_Body,"<") and StringInStr($as_Body,">") Then
$objEmail.HTMLBody = $as_Body
Else
$objEmail.Textbody = $as_Body & @CRLF
EndIf
If $s_AttachFiles <> "" Then
Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")
For $x = 1 To $S_Files2Attach[0]
$S_Files2Attach[$x] = _PathFull ($S_Files2Attach[$x])
If FileExists($S_Files2Attach[$x]) Then
$objEmail.AddAttachment ($S_Files2Attach[$x])
Else
$i_Error_desciption = $i_Error_desciption & @lf & 'File not found to attach: ' & $S_Files2Attach[$x]
SetError(1)
return 0
EndIf
Next
EndIf
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
;Authenticated SMTP
If $s_Username <> "" Then
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password
EndIf
If $Ssl Then
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
EndIf
;Update settings
MsgBox(4096, "", $s_Subject)
$objEmail.Configuration.Fields.Update
; Sent the Message
$objEmail.Send
if @error then
SetError(2)
return $oMyRet[1]
Else
msgbox(4096, "", "mail")
EndIf
EndFunc ;==>_INetSmtpMailCom
;
;
;~ ; Com Error Handler
Func MyErrFunc()
$HexNumber = Hex($oMyError.number, 8)
$oMyRet[0] = $HexNumber
$oMyRet[1] = StringStripWS($oMyError.description,3)
ConsoleWrite("### COM Error ! Number: " & $HexNumber & " ScriptLine: " & $oMyError.scriptline & " Description:" & $oMyRet[1] & @LF)
SetError(1); something to check for when this function returns
Return
EndFunc ;==>MyErrFuncJ'ai volontairement supprimé le code inintéressant car les fichiers sont correctement créés.
Si vous pouviez m'aider.
Merci
Neric77



