Question [Outlook] Relance semi-automatique d'email
- fabien
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 26
- Remerciements reçus 0
il y a 14 ans 3 mois #10611
par fabien
[Outlook] Relance semi-automatique d'email a été créé par fabien
Geekitude ? Peut être un peu...
Mais c'est parti d'un besoin : automatiser la relance d'email sous Outlook (moi j'oublie).
Le principe : faire un \"replyall\" à tous les emails présents dans le dossier \"Relance\" de la Boîte de réception.
[code:1]
Function Relance-Email {
<#
.SYNOPSIS
Envoi automatique d'email de relance.
.EXAMPLE
Relance-Email
.EXAMPLE
Relance-Email -NoConfirm
Envoi sans confirmation.
.EXAMPLE
Relance-Email -MinOldDays 5
Envoi d'une relance aux emails de plus de 5 jours
.DESCRIPTION
Envoi automatique d'email de relance. Se base sur les emails présents dans le dossier Relance.
.NOTES
#COMMON#
.LINK
#>
Param(
[string]$Body = \"N'ayant pas eu de retour à ce jour, je me permets de vous relancer sur ce sujet.\",
[int]$MinOldDays = 3,
[switch]$StepbyStep,
[switch]$NoConfirm
)
$Body = \"Bonjour,`n`n$body\"
# Cohérence des arguments
if ($StepbyStep -and $NoConfirm){
Write-host -ForegroundColor Red \"Les arguments StepByStep et Noconfirm ne peuvent pas être utilisés simultanément.\"
return
}
# Instanciation du répertoire Outlook \"Relance\"
$olFolderInbox = 6
$Outlook = new-object -comobject outlook.application
$Outlook_namespace = $outlook.GetNameSpace(\"MAPI\"«»)
$Outlook_Inbox = $Outlook_namespace.getDefaultFolder($olFolderInbox)
try{
$Outlook_Relance = $Outlook_Inbox.Folders.Item(\"Relance\"«»)
}
catch{
Write-host -ForegroundColor Red \"Le dossier `\"Relance`\" dans la Boîte de réception n'existe pas.\"
return
}
# Récupération de l'adresse email à mettre en copie
$CC_Email = $Outlook_Inbox.FolderPath.split(\"\\"«»)[2]
# Récupération des emails à relancer
$List_Relance = $Outlook_Relance.items | ?{ $(get-date) -gt $_.SentOn.AddDays($MinOldDays) }
if($List_Relance -eq $null){
Write-host -ForegroundColor Yellow \"Aucun email concerné.\"
return
}
# Validation du message (body)
Write-host \"Contenu du message de relance :\"
Write-host -ForegroundColor blue \"$body\"
#Affichage des emails à relancer
Write-host \"`nEmails concernés par la relance :\"
$List_Relance | select subject,SenderName,to
if (-not $NoConfirm){
Read-Host -Prompt \"`nAppuyez sur la touche Entrée pour continuer (ctrl + c pour arrêter)\"
}
# Pour chaque email présent dans le dossier Relance
$List_Relance | %{
$Email = $_.ReplyAll()
$Email.Subject = $Email.Subject.substring(4)
if (-not $Email.Subject.StartsWith(\"[Relance]\"«»)){
$Email.Subject = \"[Relance] $($Email.Subject)\"
}
$Email.bodyformat = 3
$Email.Body = $Body + $Email.Body
$Email.CC = $CC_Email
# Gestion de la confirmation
if (-not $StepbyStep){
$Email.send()
}else{
# Message de validation de relance
$title = \"Confirmation de relance :\"
$message = \"Voulez-vous relancer cet email : $($Email.Subject) ?\"
$yes = New-Object System.Management.Automation.Host.ChoiceDescription \"&Yes\" #, \"\"
$no = New-Object System.Management.Automation.Host.ChoiceDescription \"&No\" #, \"\"
$options = [System.Management.Automation.Host.ChoiceDescription[]]($yes, $no)
$result = $host.ui.PromptForChoice($title, $message, $options, 0)
# Action en fonction de la confirmation
if ($result -eq 0){
$Email.send()
}else{
Write-Host -ForegroundColor Yellow \"`tRelance annulée pour $($Email.Subject)\"
}
}
}
}
[/code:1]
MAJ : Passage du format en RichText + ajout d'arguments
Message édité par: Phebus, à: 25/11/11 16:52<br><br>Message édité par: Phebus, à: 28/11/11 08:45
Mais c'est parti d'un besoin : automatiser la relance d'email sous Outlook (moi j'oublie).
Le principe : faire un \"replyall\" à tous les emails présents dans le dossier \"Relance\" de la Boîte de réception.
[code:1]
Function Relance-Email {
<#
.SYNOPSIS
Envoi automatique d'email de relance.
.EXAMPLE
Relance-Email
.EXAMPLE
Relance-Email -NoConfirm
Envoi sans confirmation.
.EXAMPLE
Relance-Email -MinOldDays 5
Envoi d'une relance aux emails de plus de 5 jours
.DESCRIPTION
Envoi automatique d'email de relance. Se base sur les emails présents dans le dossier Relance.
.NOTES
#COMMON#
.LINK
#>
Param(
[string]$Body = \"N'ayant pas eu de retour à ce jour, je me permets de vous relancer sur ce sujet.\",
[int]$MinOldDays = 3,
[switch]$StepbyStep,
[switch]$NoConfirm
)
$Body = \"Bonjour,`n`n$body\"
# Cohérence des arguments
if ($StepbyStep -and $NoConfirm){
Write-host -ForegroundColor Red \"Les arguments StepByStep et Noconfirm ne peuvent pas être utilisés simultanément.\"
return
}
# Instanciation du répertoire Outlook \"Relance\"
$olFolderInbox = 6
$Outlook = new-object -comobject outlook.application
$Outlook_namespace = $outlook.GetNameSpace(\"MAPI\"«»)
$Outlook_Inbox = $Outlook_namespace.getDefaultFolder($olFolderInbox)
try{
$Outlook_Relance = $Outlook_Inbox.Folders.Item(\"Relance\"«»)
}
catch{
Write-host -ForegroundColor Red \"Le dossier `\"Relance`\" dans la Boîte de réception n'existe pas.\"
return
}
# Récupération de l'adresse email à mettre en copie
$CC_Email = $Outlook_Inbox.FolderPath.split(\"\\"«»)[2]
# Récupération des emails à relancer
$List_Relance = $Outlook_Relance.items | ?{ $(get-date) -gt $_.SentOn.AddDays($MinOldDays) }
if($List_Relance -eq $null){
Write-host -ForegroundColor Yellow \"Aucun email concerné.\"
return
}
# Validation du message (body)
Write-host \"Contenu du message de relance :\"
Write-host -ForegroundColor blue \"$body\"
#Affichage des emails à relancer
Write-host \"`nEmails concernés par la relance :\"
$List_Relance | select subject,SenderName,to
if (-not $NoConfirm){
Read-Host -Prompt \"`nAppuyez sur la touche Entrée pour continuer (ctrl + c pour arrêter)\"
}
# Pour chaque email présent dans le dossier Relance
$List_Relance | %{
$Email = $_.ReplyAll()
$Email.Subject = $Email.Subject.substring(4)
if (-not $Email.Subject.StartsWith(\"[Relance]\"«»)){
$Email.Subject = \"[Relance] $($Email.Subject)\"
}
$Email.bodyformat = 3
$Email.Body = $Body + $Email.Body
$Email.CC = $CC_Email
# Gestion de la confirmation
if (-not $StepbyStep){
$Email.send()
}else{
# Message de validation de relance
$title = \"Confirmation de relance :\"
$message = \"Voulez-vous relancer cet email : $($Email.Subject) ?\"
$yes = New-Object System.Management.Automation.Host.ChoiceDescription \"&Yes\" #, \"\"
$no = New-Object System.Management.Automation.Host.ChoiceDescription \"&No\" #, \"\"
$options = [System.Management.Automation.Host.ChoiceDescription[]]($yes, $no)
$result = $host.ui.PromptForChoice($title, $message, $options, 0)
# Action en fonction de la confirmation
if ($result -eq 0){
$Email.send()
}else{
Write-Host -ForegroundColor Yellow \"`tRelance annulée pour $($Email.Subject)\"
}
}
}
}
[/code:1]
MAJ : Passage du format en RichText + ajout d'arguments
Message édité par: Phebus, à: 25/11/11 16:52<br><br>Message édité par: Phebus, à: 28/11/11 08:45
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.045 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Contributions à la communauté
- [Outlook] Relance semi-automatique d'email