12/12/2024

PowerShell

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

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 = "[email protected]","[email protected]","[email protected]"

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 [email protected] -To $To -Subject "test" -Body "test" -BodyAsHtml

Le code complet :

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

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

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

4 commentaires sur “PowerShell – Send-MailMessage : envoyer un e-mail à plusieurs destinataires

  • Bonjour,

    A quoi correspond réellement  » smtp.server.net  » ?
    Doit-on le remplacer par un nom de serveur ou une adresse IP ?

    Merci par avance.

    Répondre
    • Bonjour,
      Cela correspond au nom FQDN ou à l’adresse IP du serveur SMTP à utiliser pour envoyer l’e-mail, par exemple le serveur SMTP de Google pour utiliser Gmail.
      Florian

      Répondre
  • Salut,
    Cela ne fonctionne pas car j’ai le méssage suivant : « La réponse du serveur était : 5.1.0 Authentification requise. »

    Merci pour votre aide.

    Olivier

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.