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