Page 1 sur 1

outlook envoi de pieces jointes à la date du jour

Posté : dim. 28 oct. 2018 12:16
par yohanb767
Bonjour ,

j'ai un petit script pour envoyer un mail avec une pièce jointe jusque là pas de problème pour envoyer ma pièce jointe
ce que j'aimerai c'est envoyer en pièce jointe tous les fichiers créer à la date du jour et uniquement ceux là

j'ai un dossier avec tous ces fichiers (xlsx) qui ce nomme BL Numérique

voici mon script
    Local $olMailItem = 0
    Local $olFormatRichText = 3
    Local $olImportanceLow = 0
    Local $olImportanceNormal = 1
    Local $olImportanceHigh = 2
    Local $olByValue = 1
    Local $olFormatHTML = 2
    Local $olFormatPlain = 1
        Local $to = "monadresse@hotmail.fr"
        Local $subj = "test"

    $oOApp = ObjCreate("Outlook.Application")
    $oOMail = $oOApp.CreateItem ($olMailItem)
    $oOMail.Save
    With $oOMail
        .To = ($to)
        .Subject = $subj
        .BodyFormat = $olFormatHTML
        .Importance = $olImportanceNormal
        .HTMLBody = "ca marche"
        .attachments.add  ; j'aimerai joindre uniquement les fichiers xlsx créer à la date du jour
;contenu dans le dossier BL Numérique
        .Send
    EndWith
    $oOApp=0
si quelqu'un à une solution , merci d'avance

Yohan

Re: outlook envoi de pieces jointes à la date du jour

Posté : dim. 28 oct. 2018 14:56
par walkson
Bonjour,

Code : Tout sélectionner

#include <File.au3>
#include <Array.au3>
Local $array_datejour[0]
$array = _FileListToArrayRec (@UserProfileDir,"*.xlsx", $FLTAR_FILES ,$FLTAR_RECUR,$FLTAR_NOSORT,$FLTAR_FULLPATH );le file, récursive, pas de trie, chemin complet
If @error Then Exit MsgBox(16,"Erreur",@ScriptLineNumber &" => @extended "& @extended)
_ArrayDisplay($array)
_ArrayColInsert($array,1)
For $i = 1 To $array[0][0]
        $info = StringLeft(FileGetTime($array[$i][0],0,1),8) ;return a string YYYYMMDD supprimé (HHMMSS)
        $array[$i][1] = $info
        ;========== autre possibilité =====================
        If $info = @YEAR & @MON & @MDAY Then
                _ArrayAdd($array_datejour,$array[$i][0])
        EndIf

Next
If UBound($array_datejour) = 0  Then Exit MsgBox(16,"Erreur","Pas de fichier à la date du jour")
_ArrayDisplay($array,"tous les Excels et dates")
_ArrayDisplay($array_datejour,"date du jour")
;================================================================================
Local $olMailItem = 0
Local $olFormatRichText = 3
Local $olImportanceLow = 0
Local $olImportanceNormal = 1
Local $olImportanceHigh = 2
Local $olByValue = 1
Local $olFormatHTML = 2
Local $olFormatPlain = 1
Local $to = "monadress@mail.fr"
Local $subj = "test " & @MDAY &"-"& @MON &"-"& @YEAR &" "& @HOUR &" "& @MIN

$oOApp = ObjCreate("Outlook.Application")
If @error Then Exit MsgBox(16,"Erreur",@ScriptLineNumber)
$oOMail = $oOApp.CreateItem ($olMailItem)
$myAttachments = $oOMail.Attachments
$oOMail.Save

$oOMail.To = ($to)
$oOMail.Subject = $subj
$oOMail.BodyFormat = $olFormatHTML
$oOMail.Importance = $olImportanceNormal
$oOMail.HTMLBody = "ca marche"
For $i = 0 To UBound($array_datejour) - 1
$oOMail.Attachments.add($array_datejour[$i])
Next
$oOMail.Send
$oOApp = 0

Re: outlook envoi de pieces jointes à la date du jour  

Posté : dim. 28 oct. 2018 17:02
par yohanb767
Merci Walkson , je n'aurai jamais trouvé
je vais décortiquer le code pour en apprendre plus mais cela me va parfaitement
merci encore et bonne soirée

Re: outlook envoi de pieces jointes à la date du jour

Posté : dim. 28 oct. 2018 20:09
par walkson
J'ai simplifié la première partie du code et j'ai personnalisé le "body"

Code : Tout sélectionner

#include <File.au3>
#include <Array.au3>
Local $array_datejour[0]
$array = _FileListToArrayRec (@UserProfileDir,"*.xlsx", $FLTAR_FILES ,$FLTAR_RECUR,$FLTAR_NOSORT,$FLTAR_FULLPATH );le file, récursive, pas de trie, chemin complet
If @error Then Exit MsgBox(16,"Erreur",@ScriptLineNumber &" => @extended "& @extended)
_ArrayDisplay($array)
Local $classeur
Local $NBclasseur = 0
For $i = 1 To $array[0]
        $info = StringLeft(FileGetTime($array[$i],0,1),8) ;return a string YYYYMMDD supprimé (HHMMSS)
        If $info = @YEAR & @MON & @MDAY Then
                _ArrayAdd($array_datejour,$array[$i])
				$classeur &= StringRegExpReplace($array[$i], "(.*[\\]+)", "")  & "<br>" ;récupère le nom du classeur sans le chemin
				$NBclasseur += 1
        EndIf

Next
If UBound($array_datejour) = 0  Then Exit MsgBox(16,"Erreur","Pas de fichier à la date du jour")
_ArrayDisplay($array_datejour,"date du jour")
;================================================================================

$body = "<body>" & _
'<big style="color: rgb(51, 51, 255);">Bonjour,<br>' & _
"Je vous souhaite bonne réception des " & $NBclasseur & " classeurs Excel de ce jour:<br>" & $classeur & _
'Cordialement<br>yohanb767<br><br>' & _
'<img style="width: 128px; height: 96px;" alt="image" src="https://www.autoitscript.com/autoit3/files/graphics/I_Love_AutoIt_2.gif"></big></body>'






Local $olMailItem = 0
Local $olFormatRichText = 3
Local $olImportanceLow = 0
Local $olImportanceNormal = 1
Local $olImportanceHigh = 2
Local $olByValue = 1
Local $olFormatHTML = 2
Local $olFormatPlain = 1
Local $to = "monadress@mail.fr"
Local $subj = "test " & @MDAY &"-"& @MON &"-"& @YEAR &" "& @HOUR &" "& @MIN

$oOApp = ObjCreate("Outlook.Application")
If @error Then Exit MsgBox(16,"Erreur",@ScriptLineNumber)
$oOMail = $oOApp.CreateItem ($olMailItem)
$myAttachments = $oOMail.Attachments
$oOMail.Save

$oOMail.To = ($to)
$oOMail.Subject = $subj
$oOMail.BodyFormat = $olFormatHTML
$oOMail.Importance = $olImportanceNormal
$oOMail.HTMLBody = $body
For $i = 0 To UBound($array_datejour) - 1
$oOMail.Attachments.add($array_datejour[$i])
Next
;$oOMail.Send ;envoie
$oOMail.Display ;affiche
$oOApp = 0



Re: outlook envoi de pieces jointes à la date du jour

Posté : dim. 28 oct. 2018 21:57
par yohanb767
merci encore Walkson