====== Mail par Powershell ======
Sur une machine windows (serveur), on a parfois besoin d'automatiser l'envoie de mail pour la supervision ou rapport de tache dans plusieurs script indépendant et qui font des choses différentes,…
Afin de ne pas refaire à chaque fois la section du script voici un module pour l'envoie. (Il faut que la machine soit autorisée à envoyer des mails)
à copier dans “C:\Program Files\WindowsPowerShell\Modules\MailFromPS”
fichier PSM1: MailFromPS.psm1 (m pour module)
function MailFromPS {
param (
[string[]]$to = $dest.Split(','),
[string]$sujet,
[string]$msg,
[string]$piecejointe
)
$smtp = "monsmtp.xxx.fr"
$exp = "webmaster@xxx.fr"
$codage=[System.Text.Encoding]::UTF8
$codage=New-Object System.Text.utf8encoding
if([string]::IsNullOrEmpty('$piecejointe')) {
write-output("sans PJ")
Send-MailMessage -Encoding $codage -SmtpServer $smtp -From $exp -To $to -Subject $sujet -Body $msg
}else{
write-output("avec PJ")
Send-MailMessage -Encoding $codage -SmtpServer $smtp -From $exp -To $to -Subject $sujet -Body $msg -Attachments $piecejointe
}
}
Pour l'utilise on appeler ce module avec “Import-module” dans les scripts qui en ont besoin. Une seule ligne dans un script qui a besoin d'envoyer un mail et un seul script de configuration du SMTP à modifier si besoin.
example: testenvoi.ps1
Import-module MailFromPS
#$dest = "contact1@toto.fr"
$dest = "contact1@toto.fr","contact2@toto.fr","contact3@toto.fr"
$sujet = "[Rapport test] liste pour test"
$msg = "Rapport de test sur le serveur 1"
$piecejointe = "c:\maPJ.txt"
MailFromPS -to $dest -sujet $sujet -msg $msg -piecejointe $piecejointe