Cela fait un moment que je suis pas venu ici
Et je reviens vers vous pour faire un petit soft en autoit avec ce genre de fonctionnalités :
https://pastebin.com/AzUjQn9L
En gros cela dois lire une boite mail, et précisément un dossier spécifique prendre quelques données dans les mails.
Ensuite les déplacer dans un autre dossier.
Pour enfin les exporter en csv avec cette structure :
Dat = i.CreationTime
Cells(b, 1) = Serial
Cells(b, 2) = Dat
Cells(b, 3) = Noir
Cells(b, 4) = Couleur
Le plus compliqué pour moi c'est surtout comment aller lire les mails sur un serveur exchange ou dois je faire comme le vbs avec outlook ouvert ?
Ensuite reste l'export vers du csv beaucoup moins difficile mais bon.
J'ai donc trouvé ceci pour l'envoi d'email qui fonctionne très bien !
;
;##################################
; Include
;##################################
#Include<file.au3>
;##################################
; Variables
;##################################
$SmtpServer = "smtp.mail.yahoo.com" ; address for the smtp-server to use - REQUIRED
$FromName = "Adrive" ; name from who the email was sent
$FromAddress = "Adrive_2531@yahoo.com" ; address from where the mail should come
$ToAddress = "Natraj550@yahoo.com" ; destination address of the email - REQUIRED
$Subject = "Userinfo" ; subject from the email - can be anything you want it to be
$Body = "Hello" ; the messagebody from the mail - can be left blank but then you get a blank mail
$AttachFiles = "" ; the file(s) you want to attach seperated with a ; (Semicolon) - leave blank if not needed
$CcAddress = "" ; address for cc - leave blank if not needed
$BccAddress = "" ; address for bcc - leave blank if not needed
$Importance = "Normal" ; Send message priority: "High", "Normal", "Low"
$Username = "Adrive_2531" ; username for the account used from where the mail gets sent - REQUIRED
$Password = "**********" ; password for the account used from where the mail gets sent - REQUIRED
$IPPort = 25 ; port used for sending the mail
$ssl = 0 ; enables/disables secure socket layer sending - put to 1 if using httpS
;~ $IPPort=465 ; GMAIL port used for sending the mail
;~ $ssl=1 ; GMAILenables/disables secure socket layer sending - put to 1 if using httpS
;##################################
; Script
;##################################
Global $oMyRet[2]
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
$rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)
If @error Then
MsgBox(0, "Error sending message", "Error code:" & @error & " Description:" & $rc)
EndIf
;
; The UDF
Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance="Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0)
Local $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])
;~ ConsoleWrite('@@ Debug : $S_Files2Attach[$x] = ' & $S_Files2Attach[$x] & @LF & '>Error code: ' & @error & @LF) ;### Debug Console
If FileExists($S_Files2Attach[$x]) Then
ConsoleWrite('+> File attachment added: ' & $S_Files2Attach[$x] & @LF)
$objEmail.AddAttachment($S_Files2Attach[$x])
Else
ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF)
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
If Number($IPPort) = 0 then $IPPort = 25
$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
$objEmail.Configuration.Fields.Update
; Set Email Importance
Switch $s_Importance
Case "High"
$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "High"
Case "Normal"
$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Normal"
Case "Low"
$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Low"
EndSwitch
$objEmail.Fields.Update
; Sent the Message
$objEmail.Send
If @error Then
SetError(2)
Return $oMyRet[1]
EndIf
$objEmail=""
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 ;==>MyErrFun
;##################################
; Include
;##################################
#Include<file.au3>
;##################################
; Variables
;##################################
$SmtpServer = "smtp.mail.yahoo.com" ; address for the smtp-server to use - REQUIRED
$FromName = "Adrive" ; name from who the email was sent
$FromAddress = "Adrive_2531@yahoo.com" ; address from where the mail should come
$ToAddress = "Natraj550@yahoo.com" ; destination address of the email - REQUIRED
$Subject = "Userinfo" ; subject from the email - can be anything you want it to be
$Body = "Hello" ; the messagebody from the mail - can be left blank but then you get a blank mail
$AttachFiles = "" ; the file(s) you want to attach seperated with a ; (Semicolon) - leave blank if not needed
$CcAddress = "" ; address for cc - leave blank if not needed
$BccAddress = "" ; address for bcc - leave blank if not needed
$Importance = "Normal" ; Send message priority: "High", "Normal", "Low"
$Username = "Adrive_2531" ; username for the account used from where the mail gets sent - REQUIRED
$Password = "**********" ; password for the account used from where the mail gets sent - REQUIRED
$IPPort = 25 ; port used for sending the mail
$ssl = 0 ; enables/disables secure socket layer sending - put to 1 if using httpS
;~ $IPPort=465 ; GMAIL port used for sending the mail
;~ $ssl=1 ; GMAILenables/disables secure socket layer sending - put to 1 if using httpS
;##################################
; Script
;##################################
Global $oMyRet[2]
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
$rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)
If @error Then
MsgBox(0, "Error sending message", "Error code:" & @error & " Description:" & $rc)
EndIf
;
; The UDF
Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance="Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0)
Local $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])
;~ ConsoleWrite('@@ Debug : $S_Files2Attach[$x] = ' & $S_Files2Attach[$x] & @LF & '>Error code: ' & @error & @LF) ;### Debug Console
If FileExists($S_Files2Attach[$x]) Then
ConsoleWrite('+> File attachment added: ' & $S_Files2Attach[$x] & @LF)
$objEmail.AddAttachment($S_Files2Attach[$x])
Else
ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF)
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
If Number($IPPort) = 0 then $IPPort = 25
$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
$objEmail.Configuration.Fields.Update
; Set Email Importance
Switch $s_Importance
Case "High"
$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "High"
Case "Normal"
$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Normal"
Case "Low"
$objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Low"
EndSwitch
$objEmail.Fields.Update
; Sent the Message
$objEmail.Send
If @error Then
SetError(2)
Return $oMyRet[1]
EndIf
$objEmail=""
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 ;==>MyErrFun
Sub LireMessages()
Dim olapp As New Outlook.Application
Dim NS As Object, Dossier As Object
Dim OlExp As Object
Dim i As Object
Dim mybody() As String
Dim fromsender As String
Set NS = olapp.GetNamespace("MAPI")
Set Dossier = NS.Folders("Dossiers personnels").Folders("Boîte de réception")
b = 2
For Each i In Dossier.Items
If i.SenderEmailAddress = "alerte@alerte.com" And i.Subject = "Declenchement alerte" Then
sujet = i.Subject
mybody = Split(i.Body, vbCrLf)
fromsender = i.SenderEmailAddress
dejafait = True
For compt = 0 To UBound(mybody)
If InStr(1, UCase(mybody(compt)), UCase("ALERTE")) > 0 And dejafait = True Then
alerte = LTrim(Split(mybody(compt), ":")(1))
dejafait = False
End If
If InStr(1, UCase(mybody(compt)), UCase("Point de mesure")) > 0 Then
PointMesure = LTrim(Split(mybody(compt), ":")(1))
End If
If InStr(1, UCase(mybody(compt)), UCase("Situation")) > 0 Then
situation = LTrim(Split(mybody(compt), ":")(1))
End If
If InStr(1, UCase(mybody(compt)), UCase("Seuil")) > 0 Then
seuil = LTrim(Split(mybody(compt), ":")(1))
End If
If InStr(1, UCase(mybody(compt)), UCase("Liste des alertes")) > 0 Then
mydate = Mid(mybody(compt), InStr(1, mybody(compt), "/") - 2, 10)
End If
Next
Cells(b, 1) = fromsender
Cells(b, 2) = sujet
Cells(b, 3) = Format(mydate, "MM/DD/YYYY")
Cells(b, 4) = alerte
Cells(b, 5) = PointMesure
Cells(b, 6) = seuil
Cells(b, 7) = situation
b = b + 1
End If
Next i
End Sub
Dim olapp As New Outlook.Application
Dim NS As Object, Dossier As Object
Dim OlExp As Object
Dim i As Object
Dim mybody() As String
Dim fromsender As String
Set NS = olapp.GetNamespace("MAPI")
Set Dossier = NS.Folders("Dossiers personnels").Folders("Boîte de réception")
b = 2
For Each i In Dossier.Items
If i.SenderEmailAddress = "alerte@alerte.com" And i.Subject = "Declenchement alerte" Then
sujet = i.Subject
mybody = Split(i.Body, vbCrLf)
fromsender = i.SenderEmailAddress
dejafait = True
For compt = 0 To UBound(mybody)
If InStr(1, UCase(mybody(compt)), UCase("ALERTE")) > 0 And dejafait = True Then
alerte = LTrim(Split(mybody(compt), ":")(1))
dejafait = False
End If
If InStr(1, UCase(mybody(compt)), UCase("Point de mesure")) > 0 Then
PointMesure = LTrim(Split(mybody(compt), ":")(1))
End If
If InStr(1, UCase(mybody(compt)), UCase("Situation")) > 0 Then
situation = LTrim(Split(mybody(compt), ":")(1))
End If
If InStr(1, UCase(mybody(compt)), UCase("Seuil")) > 0 Then
seuil = LTrim(Split(mybody(compt), ":")(1))
End If
If InStr(1, UCase(mybody(compt)), UCase("Liste des alertes")) > 0 Then
mydate = Mid(mybody(compt), InStr(1, mybody(compt), "/") - 2, 10)
End If
Next
Cells(b, 1) = fromsender
Cells(b, 2) = sujet
Cells(b, 3) = Format(mydate, "MM/DD/YYYY")
Cells(b, 4) = alerte
Cells(b, 5) = PointMesure
Cells(b, 6) = seuil
Cells(b, 7) = situation
b = b + 1
End If
Next i
End Sub
https://www.autoitscript.com/forum/file ... outlookex/
Vous que on utilise outlook.
Mais je souhaite seulement lire les mails qui arrive dessus dans un dossier.
Donc si vous avez des idée je suis à votre écoute.
De ce fait j'aurais bien besoin de votre aide !
Cordialement