Skip to content

Instantly share code, notes, and snippets.

@SteeveGit
Created July 4, 2018 03:59
Show Gist options
  • Save SteeveGit/3d74901320e95b9366ec5bda179f04c9 to your computer and use it in GitHub Desktop.
Save SteeveGit/3d74901320e95b9366ec5bda179f04c9 to your computer and use it in GitHub Desktop.
email vocal notification
# Created by Steeve Antoine
#
# Before anything, START Outlook (keep the app open) and select the "receipt" folder
#
# Ok, that's lot of useless comments but I know me...
# After some months I will forget the purpose of some (obvious) code.
# PRINCIPE
# Les titres (subject) des emails du jour sont lus à haute voix
# ... avec une voix féminine en français mais évidement on peut la changer dans la fonction <tell>
# Le processus rentre alors dans une boucle d'attente et lit les nouveaux messages.
# Testé avec Outlook sous Win 10 pro le 28/06/2018
# (version non vérifiée ^^ mais le 28/06/2018 avec Windows à jour, tout fonctionnait)
# Version de PowerShell = 5.1
### Fonction syntétiseur vocal (Tell)###
# La version console gratuite de Balabolka doit être placée dans le répertoite d'exécution du script.
# Le programme s'appelle balcon.exe est trouvable via un google search "balabolka console download".
# Application console : Télécharger (584 Ko)
# L'application console diffère de l'application de bureau en ce qu'elle ne contient pas d'interface
# utilisateur graphique et fonctionne uniquement en ligne de commande ou paramétrée par un fichier
# de configuration.
#
#
function Tell($msg) {
.\balcon.exe -p 10 -t $msg -n "Microsoft Hortense Desktop"
}
Cls
# Trucs chiants à faire obligatoirement pour accéder à ses mails.
# La simplicité fonctionnelle, Ils en ont jamais entendu parler chez 'Crosoft.
# Mais le comlexité structurelle, ça, ils connaissent.
if ($Namespace -eq $null){
Add-Type -Assembly "Microsoft.Office.Interop.Outlook"
$Outlook = New-Object -ComObject Outlook.Application
$Namespace = $Outlook.GetNameSpace("MAPI")
}
$Today= (Get-date).Date #get the current date minus the time.
Write-Host "Et c'est parti le $Today"
#For the first launch recites all emails from the current day, Easier to test the script.
while($true) {
# The "new" subfolder is a container for new emails I needed.
# In Outlouk, create a new rule to duplicate entering emails inside the subfolder "new".
# Feel free to use the standard "receipt" folder instead,
# provided that it's not already bloated (full of emails).
# Don't use accents in strings used as Folder names, The console may not like it...
# In my config, the 2 following code lines have the same effect, so they are equal.
# $New = $Namespace.Folders(1).Folders("Boîte de réception").Folders("new").Items |
# $New = $Namespace.Folders(1).Folders(1).Folders("new").Items |
# ExempLe: pour vérifier qu'on est bien dans "boite de réception" et si outlouk
# est configuré en français, faire la vérification suivante:
# >$Namespace.Folders(1).Folders("Boîte de réception") | select Name
# Si "boite de réception" est le premier dossier dans Outlouk, le code suivant fait la même chose:
# >$Namespace.Folders(1).Folders(1) | select Name
#Est-il bien nécessaire de rafraîchir la variable $mails comme ça ? Potentiellemnt lent.
$mails = $Namespace.Folders(1).Folders(1).Items |
Where-Object {$_.SentOn -gt $Today}
foreach ($mail in $mails) {
$Today = $mail.SentOn
Write-Host $mail.SentOn $mail.subject
Tell ($mail.SenderName + " " + $mail.subject)
#$mail.Delete()
#Mauvaise idée, détruire une copie d'un email détruit toutes les copies dans tous les dossiers.
}
start-sleep -seconds 60 #Attendre 1 minute
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment