(modifié le 11 mai 2016 à 20:46)

Envoyer des mails en powershell est pratique : rapports, scripts, notification, etc.

email-powershell

Et ça tombe bien car c'est très simple.

Avec PowerShell V2 et supérieur

$enc = New-Object System.Text.utf8encoding
$corps="<h1>Hello BM :)</h1>Voilà un très joli message avec accents : &agrave;"
Send-MailMessage -From 'expediteur@email.com' -To 'destinataire@email.com' -Subject 'le sujet du mail' -Body $corps -SmtpServer 'smtp.fai.fr' -BodyAsHtml -Encoding $enc

Pour avoir une priorité haute ajoutez ceci (source):

-Priority High

Vous pouvez utiliser directement des accents brut mais aussi en HTML comme dans l'exemple. Dans les deux cas il seront correctement inteprétés, j'ai testé dans Hotmail, Gmail, Zimbra et Yahoo.

Il faut que le relai SMTP autorise l'envoi de mail sans authentification, c'est souvent le cas avec celui de votre FAI.

C'est simple et rapide !

Avec PowerShell V1

Je vous donne quand même l'ancienne méthode au cas où.

$smtp = new-object system.net.mail.smtpClient('smtp.fai.fr')
$msg = new-object System.Net.Mail.MailMessage
$msg.IsBodyHtml = $true
$msg.From = "expediteur@email.com"
$msg.To.Add("destinataire@email.com")
$msg.Subject = "le sujet du mail"
$msg.Body = "<h1>Hello BM :)</h1>Voilà un très joli message avec accents : &agrave;"
$smtp.send($msg)

Tout aussi efficace.

Même chose pour la priorité à insérer avant la dernière ligne :

$msg.Priority="high"

Un point sur les versions PowerShell

Nativement livré :

  • PowerShell 1.0 (2006) : Windows Server 2008
  • PowerShell 2.0 (2009) : Windows 7, Windows Server 2008 R2
  • PowerShell 3.0 (2012): Windows 8, Windows Server 2012
  • PowerShell 4.0 (2013) : Windows 8.1, Windows Server 2012 R2
  • PowerShell 5.0 (2014) : Windows 10

Installable :

  • PowerShell 1.0 : XP SP2, XP SP3, Server 2003 SP1, Server 2003 SP2, Server 2003 R2, Vista, Vista SP2
  • PowerShell 2.0 : XP SP3, Server 2003 SP2, Vista SP1, Vista SP2, Server 2008 SP1, Server 2008 SP2
  • PowerShell 3.0 : 7 SP1, Server 2008 SP2, Server 2008 R2 SP1
  • PowerShell 4.0 : 7 SP1, Server 2008 R2 SP1, Server 2012
  • PowerShell 5.0 :  8.1, Server 2012 R2

Source

En cas de souci

Si vous avez des soucis d'accent dans l'email reçu cela provient de l'encodage de votre fichier ps1, dans Notepad++ menu Encodage > Convertir en ANSI (à ne pas confondre avec Encoder en ANSI). Si vos accents posent toujours problème forcez en UTF8.

Si vous ne recevez pas l'email et qu'aucune erreur n'apparaît dans la fenêtre powershell lors de l'exécution en mode console vérifiez vos spams. Il y a de fortes chances que l'email y soit, surtout si vous utilisez un domaine ayant un SPF ne concordant pas avec votre IP de sortie.

Enfin pour envoyer des mails avec des arguments c'est par ici.

Auteur : Mr Xhark

Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter