Question
Récupération mail depuis powershell
- Théo Gindre
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 8 ans 6 mois #24240
par Théo Gindre
Récupération mail depuis powershell a été créé par Théo Gindre
Bonjour,
Ayant fait pas mal de recherche et ne trouvant pas mon bonheur j'en viens a vous demande votre aide,
Je suis actuellement sur un projet qui consiste a récupérer les mails envoyés automatiquement par les systèmes d'alertes afin de les stocker dans une base de données,
J'ai réussi a faire un script qui récupère les mails depuis l'application Outlook en local cependant je n'arrive pas a récupérer les mails sur le serveur directement,
Étant donné que les mails arrivent sur une dizaine d'adresse différentes, j'aurais besoin d'un script qui se connecte directement sur le serveurs de messagerie puis récupère les informations de chaque mail pour les transférer vers la base de données qui les traitera pas la suite,
Ci dessous mon premier script:
[code:1]$olFolderInbox = 6
$outlook = new-object -com outlook.application;
$ns = $outlook.GetNameSpace(\"MAPI\"«»);
$inbox = $ns.GetDefaultFolder($olFolderInbox)
$inbox.items | foreach {
$Expediteur = $_.SenderName
$Expediteur
$Recepteur = $_.To
$Recepteur
$DateReception = $_.ReceivedTime
$DateReception
$Sujet = $_.Subject
$Sujet
$Contenu = $_.Body
$Contenu
}
[/code:1]
Merci d'avance de votre aide.
Ayant fait pas mal de recherche et ne trouvant pas mon bonheur j'en viens a vous demande votre aide,
Je suis actuellement sur un projet qui consiste a récupérer les mails envoyés automatiquement par les systèmes d'alertes afin de les stocker dans une base de données,
J'ai réussi a faire un script qui récupère les mails depuis l'application Outlook en local cependant je n'arrive pas a récupérer les mails sur le serveur directement,
Étant donné que les mails arrivent sur une dizaine d'adresse différentes, j'aurais besoin d'un script qui se connecte directement sur le serveurs de messagerie puis récupère les informations de chaque mail pour les transférer vers la base de données qui les traitera pas la suite,
Ci dessous mon premier script:
[code:1]$olFolderInbox = 6
$outlook = new-object -com outlook.application;
$ns = $outlook.GetNameSpace(\"MAPI\"«»);
$inbox = $ns.GetDefaultFolder($olFolderInbox)
$inbox.items | foreach {
$Expediteur = $_.SenderName
$Expediteur
$Recepteur = $_.To
$Recepteur
$DateReception = $_.ReceivedTime
$DateReception
$Sujet = $_.Subject
$Sujet
$Contenu = $_.Body
$Contenu
}
[/code:1]
Merci d'avance de votre aide.
Connexion ou Créer un compte pour participer à la conversation.
- crogiez
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 102
- Remerciements reçus 0
il y a 8 ans 6 mois #24241
par crogiez
Réponse de crogiez sur le sujet Re:Récupération mail depuis powershell
bonjour
j'ai fait des stat sur l'arrivée de messages
dans une boite mails
[code:1]#debut de ps1
Add-type -assembly \"Microsoft.Office.Interop.Outlook\" | out-null
$olFolders = \"Microsoft.Office.Interop.Outlook.olDefaultFolders\" -as [type]
$outlook = new-object -comobject outlook.application
$namespace = $outlook.GetNameSpace(\"MAPI\"«»)
#ma mailbox
$folder = $namespace.getDefaultFolder($olFolders::olFolderInBox)
$folder.Items.Count
#cherche autre mailbox
$namespace.Folders
#
$obj_mb=$namespace.Folders.GetFirst()
if($obj_mb.Name -ne \"autre.box@microsoft.fr\"«»){
$obj_mb=$namespace.Folders.GetNext()
}
$mlog=$obj_mb.Name; ecrit_log($mlog)
#dossiers dans mailbox
$tab_dos=$obj_mb.Folders | select folderpath,entryid
$mlog=\"nombre de dossiers=\"+$tab_dos.count;
# la suite cherche les dossiers, sou dossiers
# dans la boite mail
\"lit 1 niveau\"
$tab1=$obj_mb.Folders
$tab1.Count
\"lit 2 niveaux\"
$tab2=$obj_mb.Folders | % { $_.folders }
$tab2.Count
\"lit 3 niveaux\"
$tab3=$obj_mb.Folders | % { $_.folders | % { $_.folders }}
$tab3.Count
\"lit 4 niveaux\"
$tab4=$obj_mb.Folders | % { $_.folders | % { $_.folders | % { $_.folders }}}
$tab4.Count
\"total\"
$tab_doss=$tab1+$tab2+$tab3+$tab4
$tab_doss.count
\"cherche mails\"
$tab_doss | % {
$nom_doss=$_
$nom_doss.FolderPath
if($nom_doss.FolderPath.IndexOf(\"02-Incidents\"«») -ge 0){
$nom_doss.items.count.ToString(\"0000\"«»)
$mlog=\"\"+$nom_doss.FolderPath+\";\"+$nom_doss.items.count.ToString(\"0000\"«»); ecrit_log($mlog)
#filtre mails
#$tab_doss[234].items | % { $_.ReceivedTime.tostring()+\";\"+$_.tasksubject }
$nom_doss.items | % {
\"-\"
$nom_doss.FolderPath
\"recup parametres du mail\"
$rtime=$_.ReceivedTime
$rtime.datetime
$rtime.Hour
#filtre mail de 8h à 9h et de 17h à 18h
if(($rtime.Hour -eq 8) -or ($rtime.Hour -eq 17)){
$sendby=$_.SenderName
\"sendby=\"+$sendby
$sendto=$_.To
\"sendto=\"+$sendto
$sujet=$_.tasksubject
$sujet
$mlog=\"\"
$mlog=$mlog+$nom_doss.FolderPath+\";\"
$mlog=$mlog+$rtime.ToShortDateString()+\";\"+$rtime.ToLongTimeString()+\";\"
$mlog=$mlog+$sendby+\";\"
$mlog=$mlog+$sendto+\";\"
$mlog=$mlog+$sujet+\";\"
ecrit_log($mlog)
}
}
}
}
#rem fin log
$mlog=\"end\"; ecrit_log($mlog)[/code:1]<br><br>Message édité par: Arnaud, à: 12/09/17 22:49
j'ai fait des stat sur l'arrivée de messages
dans une boite mails
[code:1]#debut de ps1
Add-type -assembly \"Microsoft.Office.Interop.Outlook\" | out-null
$olFolders = \"Microsoft.Office.Interop.Outlook.olDefaultFolders\" -as [type]
$outlook = new-object -comobject outlook.application
$namespace = $outlook.GetNameSpace(\"MAPI\"«»)
#ma mailbox
$folder = $namespace.getDefaultFolder($olFolders::olFolderInBox)
$folder.Items.Count
#cherche autre mailbox
$namespace.Folders
#
$obj_mb=$namespace.Folders.GetFirst()
if($obj_mb.Name -ne \"autre.box@microsoft.fr\"«»){
$obj_mb=$namespace.Folders.GetNext()
}
$mlog=$obj_mb.Name; ecrit_log($mlog)
#dossiers dans mailbox
$tab_dos=$obj_mb.Folders | select folderpath,entryid
$mlog=\"nombre de dossiers=\"+$tab_dos.count;
# la suite cherche les dossiers, sou dossiers
# dans la boite mail
\"lit 1 niveau\"
$tab1=$obj_mb.Folders
$tab1.Count
\"lit 2 niveaux\"
$tab2=$obj_mb.Folders | % { $_.folders }
$tab2.Count
\"lit 3 niveaux\"
$tab3=$obj_mb.Folders | % { $_.folders | % { $_.folders }}
$tab3.Count
\"lit 4 niveaux\"
$tab4=$obj_mb.Folders | % { $_.folders | % { $_.folders | % { $_.folders }}}
$tab4.Count
\"total\"
$tab_doss=$tab1+$tab2+$tab3+$tab4
$tab_doss.count
\"cherche mails\"
$tab_doss | % {
$nom_doss=$_
$nom_doss.FolderPath
if($nom_doss.FolderPath.IndexOf(\"02-Incidents\"«») -ge 0){
$nom_doss.items.count.ToString(\"0000\"«»)
$mlog=\"\"+$nom_doss.FolderPath+\";\"+$nom_doss.items.count.ToString(\"0000\"«»); ecrit_log($mlog)
#filtre mails
#$tab_doss[234].items | % { $_.ReceivedTime.tostring()+\";\"+$_.tasksubject }
$nom_doss.items | % {
\"-\"
$nom_doss.FolderPath
\"recup parametres du mail\"
$rtime=$_.ReceivedTime
$rtime.datetime
$rtime.Hour
#filtre mail de 8h à 9h et de 17h à 18h
if(($rtime.Hour -eq 8) -or ($rtime.Hour -eq 17)){
$sendby=$_.SenderName
\"sendby=\"+$sendby
$sendto=$_.To
\"sendto=\"+$sendto
$sujet=$_.tasksubject
$sujet
$mlog=\"\"
$mlog=$mlog+$nom_doss.FolderPath+\";\"
$mlog=$mlog+$rtime.ToShortDateString()+\";\"+$rtime.ToLongTimeString()+\";\"
$mlog=$mlog+$sendby+\";\"
$mlog=$mlog+$sendto+\";\"
$mlog=$mlog+$sujet+\";\"
ecrit_log($mlog)
}
}
}
}
#rem fin log
$mlog=\"end\"; ecrit_log($mlog)[/code:1]<br><br>Message édité par: Arnaud, à: 12/09/17 22:49
Connexion ou Créer un compte pour participer à la conversation.
- Théo Gindre
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 8 ans 6 mois #24249
par Théo Gindre
Réponse de Théo Gindre sur le sujet Re:Récupération mail depuis powershell
Bonjour,
Votre code me permet bien de visualiser les autres boites mail cependant je n'arrive pas a récupérer les mails.
Votre code me permet bien de visualiser les autres boites mail cependant je n'arrive pas a récupérer les mails.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.038 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Récupération mail depuis powershell