POWERSHELL : Envoyer un email avec GMAIL (et sans client SMTP) 1

POWERSHELL : Envoyer un email avec GMAIL (et sans client SMTP)

Après Kixtart, Perl et Python, voici le tour de PowerShell !

Je découvre ce langage de script proposé par Microsoft et disponible depuis XP jusqu'à 2008 Server R2.

Comme à mon habitude, je vais vous faire partager quelques bouts de code que j'ai assemblé.

J'ai écrit à partir de plusieurs sources, la fonction suivante :

# envoi un email

function SendEmail {

param(

[System.String[]] $EmailTo,

[System.String] $Subject,

[System.String] $Body="",

[System.String[]] $Attachments

)

## adresse de l'expéditeur

$EmailFrom = "SomeEmailAddress@gmail.com"

## nom d'authentifiation SMTP

$username = " SomeEmailAddress @gmail.com"

## mot de passe d'authentifiation SMTP

$password = "SomePassword"

## serveur SMTP

$SMTPServer = "smtp.gmail.com"

## port SMTP

$SMTPPort = 587

## initialisation des outils Email

$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, $SMTPPort)

$SMTPClient.EnableSsl = $true

$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($username, $password);

## création du message

$emailMessage = New-Object System.Net.Mail.MailMessage

## expéditeur

$emailMessage.From = $EmailFrom

## destinataires

foreach ($item in $EmailTo) {

if ($debug) {Write-Host $item}

$emailMessage.To.Add($item)

}

## sujet

$emailMessage.Subject = $Subject

## corps

$emailMessage.Body = $Body

## pièces jointes

if ($Attachments -cne $null)

{

foreach ($file in $Attachments) {

if ($debug) {Write-Host $file}

$emailMessage.Attachments.Add($file)

}

}

## envoie de l'émail

$SMTPClient.Send($emailMessage)

}

Vous noterez que l'adresse de l'expéditeur et les identifiants GMAIL sont codés dans la fonction.

Cette fonction reçoit 4 arguments :

[System.String[]] $EmailTo,        un tableau d'adresse email de destination

[System.String] $Subject,        le sujet du mail

[System.String] $Body="",        le corps textuel du mail – par défaut, il est vide

[System.String[]] $Attachments     Un tableau de pièces jointes – peut être $null

L'évocation du script se fera donc de la fonction suivante :

## destinataires

$destinataires = "SomeEmailAddress@gmail.com"," SomeEmailAddress@free.fr"

$ Attachments = « c:somefile.txt », « d:somefile.xml »

SendEmail $destinataires « Sujet »" « Corps » $ Attachments

En ajoutant la ligne suivante, il est possible d'envoyer un email dont le corps est code en HTML

$ emailMessage.IsBodyHTML = $true

La séquence suivante permet de placer le contenu du fichier textuel « c:sometextfile.txt » dans le corps du mail.

$Body = [string]::join([environment]::NewLine, (get-content "c:sometextfile.txt »))

SendEmail $destinataires « Sujet » " $Body

A propos Olivier Olejniczak

Cofondateur de SynerGeek.fr. Passionné d'informatique, je m'intéresse plus particulièrement aux technologies de virtualisation et de stockage. J'apprécie la liberté et la quasi-absence de frontières à mon imagination qu'offre l'OpenSource et Linux. Professionnellement, je travaille exclusivement avec les outils Microsoft. Les pieds bien sur terre et ancrés dans le quotidien de l'entreprise, j'aime faire partager mes découvertes et contribuer à un meilleur usage des technologies. Vous aussi, rejoignez-nous sur Synergeek et partagez votre expérience!

Je vous propose également...

Compiler un script PowerShell avec PS2EXE 2

Compiler un script PowerShell avec PS2EXE

J'utilise au quotidien le langage PowerShell pour gérer des serveurs Windows. Ce langage est à …

PowerShell : Programmation MultiTâches 7

PowerShell : Programmation MultiTâches

Il peut être intéressant, afin d'optimiser le temps de traitement de tâches n'ayant pas un …