PROJET AUTOBLOG


IT-Connect

Site original : IT-Connect

⇐ retour index

PowerShell – Send-MailMessage : envoyer un e-mail à plusieurs destinataires

lundi 28 octobre 2019 à 08:25

I. Présentation

Pour envoyer un e-mail en PowerShell, Microsoft a créé le cmdlet Send-MailMessage qui est inclus nativement à PowerShell. Dans certains cas, il peut être intéressant d'envoyer l'e-mail à plusieurs destinataires, mais comment faire ? Je vous montre comment procéder dans ce tutoriel.

II. Send-MailMessage : plusieurs destinataires

Le cmdlet Send-MailMessage contient un ensemble de paramètres, y compris le serveur SMTP (-SmtpServer), l'adresse e-mail de l'expéditeur (-From), le sujet (-Subject) ou encore le corps de l'e-mail (-Body). En ce qui nous concerne, c'est le paramètre -To qui nous intéresse et qui sert à indiquer l'adresse de destination. On pourrait tout simplement indiquer les adresses e-mails à la suite au niveau de la commande, mais si l'on récupère cette liste depuis une variable, un fichier de config ou autre, ce ne sera pas possible.

Commençons par déclarer la variable $Destinataires qui va contenir la liste des destinataires séparés par une virgule :

$Destinataires = "florian@server.net","admin@server.net","fb@server.net"

Cette variable sera de type string c'est-à-dire une chaîne de caractères. Pour l'envoyer comme valeur du paramètre -To, nous devons avoir un tableau de chaînes de caractères. C'est ce que nous allons faire avec la variable $To cette fois-ci, en découpant notre chaîne précédente à chaque fois qu'une virgule est rencontrée (en guise de séparateur).

[string[]]$To = $Destinataires.Split(',')

Si l'on affiche la variable, on obtient :

Il ne reste plus qu'à utiliser notre variable $To au niveau de la commande Send-MailMessage. Finalement, c'est assez simple mais il faut savoir comment s'y prendre.

Send-MailMessage -SmtpServer smtp.server.net -From test@server.net -To $To -Subject "test" -Body "test" -BodyAsHtml

Le code complet :

$Destinataires = "florian@server.net","admin@server.net","fb@server.net"
[string[]]$To = $Destinataires.Split(',')
Send-MailMessage -SmtpServer smtp.server.net -From test@server.net -To $To -Subject "test" -Body "test" -BodyAsHtml

Voilà, votre e-mail sera envoyé à tous les destinataires de votre liste ! 👏