Question [Outlook] Relance semi-automatique d'email

Plus d'informations
il y a 14 ans 3 mois #10611 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

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.045 secondes
Propulsé par Kunena