Introduction
SharePoint dispose d’un mécanisme d’alerte assez puissant. Celui-ci permet d’envoyer à l’abonné une alerte par courriel basé sur une action qui se produit sur l’élément (il est créé, modifié, etc…). Il comporte cependant des limitations :
- On ne peut pas recevoir une alerte périodique (ex : tous les trimestres, tous les premiers Lundi du mois, etc…);
- La modification du gabarit de courriel est complexe;
- Il n’est pas possible de modifier l’adresse de réponse et le sujet pour une alerte en particulier;
- Vous devez être que propriétaire du site afin d’envoyer des alertes à d’autres personnes. Sans cela, la seule personne à qui vous pouvez envoyer des alertes à est vous-même.
Alors que faire si on veut contourner ces limitations?
Il y a quelques solutions possibles :
- Créer un timer job SharePoint (Exemple)
- Créer un flux de travail (Exemple)
- Utiliser un logiciel tiers (Exemple)
- Créer un script PowerShell s’exécutant dans une tâche planifié (Source)
Je vais mettre l’emphase sur le point 4 dans ce billet car à mon avis c’est la meilleure alternative lorsque les alertes « out-of-the-box » ne répondent pas à votre besoin.
Comparaison des différentes solutions
Utiliser un script PowerShell
Le script pour SharePoint 2013 sur site (OnPrem) est disponible ici :
Assurez-vous de modifier la section « Constantes » et d’y inscrire les valeurs correspondants à votre environnement.
Celui-ci va créer une liste EmailTemplate :
Cette liste permet à un utilisateur de piloter les différentes valeurs sans avoir besoin d’effectuer de la programmation lorsque vient le temps de changer le contenu, le sujet, etc… Bien évidemment, si vous ajoutez d’autres modèles, vous devrez ajuster votre code afin de les utiliser correctement.
Le script va aussi créer une liste Project :
Celle-ci est uniquement présente à des fins de démonstration. C’est à partir de cette liste que nous allons envoyer du contenu dynamique par courriel. Vous pouvez donc la supprimer et vous alimenter de votre propre liste si vous le souhaitez.
Voici un exemple de courriel envoyé par le script :
Exécution du script PowerShell dans une tâche planifiée
Démarrer -> Exécuter -> Taskschd.msc
Créer une nouvelle tâche :
Spécifier un compte ayant les droits d’administrateur de la ferme SharePoint.
Spécifier un déclencheur :
Ajouter une nouvelle action :
Programme/Script : Powershell.exe
Ajouter des arguments : -ExecutionPolicy Bypass C:\Sources\SharePointerie.OnPrem.SendTimeBasedEmail.ps1
En prenant soin d’adapter le chemin vers votre script.
Cliquer sur OK pour enregistrer la tâche.
Outils de développeur pour faciliter le travail avec les courriels
Pour ma part, j’utilise l’outil SMTP4DEV afin de travailler en mode local. Il suffit de démarrer l’application et celle-ci se chargera d’intercepter les envois de courriel sur le port défini.
Source : https://smtp4dev.codeplex.com/
Conclusion
L’utilisation d’un script PowerShell pour envoyer des courriels périodiques permet un maximum de flexibilité autant au niveau du déploiement qu’au niveau du pilotage. Il n’y a pas de période d’indisponibilité lors du déploiement comparativement au déploiement d’un Timer Job. Je crois donc que c’est la meilleure alternative lorsque les alertes out-of-the-box ne répondent pas à votre besoin.