Powershell est un puissant environnement de script intégré (ISE) qui peut être utilisé pour écrire et déboguer des scripts. Cet environnement de script peut exécuter un large éventail de fonctions, y compris l’envoi d’e-mails à l’aide de scripts et d’applet de commande. Cela peut aider les administrateurs système à automatiser le processus d’envoi d’e-mails en masse.
Pour utiliser PowerShell pour envoyer des e-mails, les utilisateurs doivent spécifier les paramètres, y compris le serveur SMTP qu’ils souhaitent utiliser pour envoyer le courrier. Toutes ces allées et venues sont discutées dans l’article d’aujourd’hui.
Paramètres que vous pouvez utiliser pour envoyer des e-mails à partir de PowerShell
Voici quelques paramètres majeurs que vous pouvez utiliser pour envoyer des e-mails à l’aide de PowerShell.
-
-From
: Adresse e-mail de l’expéditeur -
-To
: Adresse e-mail du destinataire du courrier -
-Cc:
adresse e-mail du destinataire qui reçoit la copie carbone du message e-mail -
-Attachments
: chemin d’accès au fichier de la pièce jointe qui doit être envoyée avec l’e-mail -
-Subject
: Objet de l’e-mail -
-Body:
corps (message principal) de l’e-mail -
-Credentials
: identifiants de connexion au serveur SMTP. Ceci est utilisé pour authentifier le serveur SMTP -
-SmtpServer
: Adresse du serveur SMTP ( Par exemple : smtp.gmail.com) -
-Port
: Port sur le serveur SMTP -
-Use Ssl
: Utiliser le protocole Secure Sockets Layer.
Envoyer des e-mails depuis Powershell
La méthode la plus courante pour envoyer des e-mails à l’aide de PowerShell consiste à utiliser l’applet de commande Send-MailMessage
. Il existe d’autres outils populaires tels que l’API system.netmail
, le composant EASendMAil et l’API Microsoft Graph.
L’applet de commande Send-MailMessage
, même après avoir été qualifiée d’obsolète par Microsoft, reste l’option la plus pratique pour envoyer des e-mails à partir de PowerShell.
- Voici une syntaxe générale pour utiliser cette applet de commande pour envoyer un e-mail.
Send-MailMessage -From "Sender Email" -To Recipients email" -Credentials (Get-Credential) -SmtpServer "SMPT server address"
Par exemple,
Send-MailMessage -From "[email protected]" -To "[email protected]" -Subject “E-mail's Subject” -Body “Main message of the E-mail” -Credentials (Get-Credential) -SmtpServer "smtp.outlook.com"
La plupart du temps, vous pouvez utiliser ces applets de commande sans le paramètre
-Credentials
. Cependant, si le serveur vous limite en envoyant un message indiquant » Le client n’a pas été authentifié », essayez d’utiliser le paramètre. - Si l’e-mail doit être envoyé à plusieurs utilisateurs,
Send-MailMessage -From "[email protected]" -To "[email protected]", "[email protected]" -Credentials (Get-Credential) -SmtpServer "smtp.outlook.com"
- Si vous souhaitez envoyer l’e-mail avec une pièce jointe, vous pouvez ajouter le paramètre
-Attachment
.
Send-MailMessage -From "[email protected]" -To "[email protected]", "[email protected]" -Attachment "C:tempSome random file.txt" -Credentials (Get-Credential) -SmtpServer "smtp.outlook.com"
- Pour ajouter CC, utilisez le paramètre
-CC “E-mail receiving the copy of the mail”
dans l’applet de commande.
Remarque : Vous pouvez même utiliser la valeur $PSEmailServer
, comme paramètre SMTP au lieu de Smtp-Server. Il s’agit de la configuration SMTP par défaut sur Powershell.
Envoyer un e-mail depuis PowerShell avec Gmail SMTP
Avant mai 2022, afin d’utiliser Gmail SMTP pour envoyer des e-mails à partir de PowerShell, les utilisateurs devaient d’abord activer les applications les moins sécurisées à partir du panneau de configuration de sécurité de Google.
Une fois cette fonctionnalité supprimée par Google, pour utiliser le serveur Google SMPT, les utilisateurs doivent désactiver l’authentification à deux facteurs sur leur compte Gmail, créer des mots de passe d’application, puis utiliser ces informations d’identification dans le code PowerShell.
Une fois que vous avez configuré le mot de passe de l’application, vous pouvez utiliser les applets de commande pour envoyer l’e-mail. Pour utiliser le SMPT de Gmail, vous devez également activer SSL. Tous les paramètres requis pour utiliser le SMTP Gmail pour l’envoi d’un e-mail sont utilisés dans ce script :
$EmailFrom = "[email protected]" $EmailTo = "[email protected]" $Subject = "Email Subject" $Body = "Main Message." $SMTPServer = "smtp.gmail.com" $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) $SMTPClient.EnableSsl = $true $SMTPClient.Credentials = New-Object System.Net.NetworkCredential("username", "password"); $SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
Voici la liste des serveurs SMTP que vous pouvez utiliser, ainsi que leur adresse et leurs ports.
Nom | Adresse du serveur SMTP | Port |
Gmail | smtp.gmail.com | 587 |
Outlook.com | smtp.mail.outlook.com | 587 |
Yahoo | smtp.mail.yahoo.com | 587 |
AOL | smtp.mail.me.com | 587 |
AOL | smtp.aol.com | 465 |