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