Office 365 : Envoyer un mail en powerShell

 

Hello,

Aujourd’hui, nous allons aborder l’envoi de mail en PowerShell en passant par les serveurs de messagerie Office 365.
Ces cmdlets permettent d’envoyer des mails uniquement sur votre domaine interne 😉 (je n’ai pas encore recherché pour aller vers un autre domaine)

C’est assez simple, mais encore faut-il disposer des bonnes informations.

Créer vos crédential afin d’envoyer votre email
$SecurePassword = ConvertTo-SecureString 'Welcome@vNext' -AsPlainText -Force #"Secure" the password, You can find an other securing procedure on my blog
$Credential = New-Object System.Management.Automation.PSCredential ('Pomme@BachToTheCloud.com', $SecurePassword) #Load your Credential in variable

Update : Le compte n’a pas besoin de droit spécifique, il doit juste disposer d’une boite mail. Par contre, si vous voulez émettre votre mail depuis une autre boite mail, il vous faudra les accès adéquats bien entendu.

Générer et envoyer un mail simple
$SmtpServer = 'smtp.office365.com'	#Office 365 SMTP Server
$To = 'Pomme@BachToTheCloud.com'	#Sender
$From = 'Banane@BachToTheCloud.com'	#Recipient
$Subject = 'Test Mail'			#Email subject
$Body = 'PowerShell message automatically generated.<br>Your script has been successful.<br> Please, delete this email<br>Best regards<br><b>Your PowerChrisShell</b>' #Email body message

#PowerShell Send-MailMessage cmdlet
Send-MailMessage -To $To -From $From -SmtpServer $SmtpServer -Credential $Credential -Port "587" -UseSsl -Subject $Subject -Body $Body -BodyAsHtml
Générer et envoyer un mail avec un CC et une pièce jointe
$SmtpServer = 'smtp.office365.com'	#Office 365 SMTP Server
$To = 'Pomme@BachToTheCloud.com'	#Sender
$From = 'Banane@BachToTheCloud.com'	#Recipient
$Subject = 'Test Mail'			#Email subject
$Body = 'PowerShell message automatically generated.<br>Your script has been successful.<br> Please, delete this email<br>Best regards<br><b>Your PowerChrisShell</b>' #Email body message
$Cc = 'Fraise@BachToTheCloud.com'
$Attachment = 'c:\_G203534.csv'

#PowerShell Send-MailMessage cmdlet
Send-MailMessage -To $To -From $From -Cc $Cc -SmtpServer $SmtpServer -Credential $Credential -Port "587" -UseSsl -Subject $Subject -Body $Body -Attachments $Attachment -BodyAsHtml

Voili voilou, c’est tout simple. Et je dédie cette article à un jeune novice que je ne citerai pas.

De rien Victor Ly 😉

Aller plus loin et sources :

Send-MailMessage http://technet.microsoft.com/en-us/library/hh849925.aspx

5 comments

  1. Victor Reply

    Bonjour Christophe,
    Tout d’abord merci pour ton article qui m’a permis d’avancer.

    J’ai une question :
    Dans la partie “Créer vos crédential afin d’envoyer votre email”:
    L’email et le mot de passe concerne t’il le compte admin du serveur ou bien celui du compte email avec lequel on va envoyer le mail?

    Merci

    • Christophe BACH Post authorReply

      Hello Victor,

      C’est le credential d’un compte ayant une boite mail, tu n’as pas besoin de droit spécifique. Sauf dans le cas où tu veux envoyer un mail depuis une boite mail où tu aurais un full access 😉

      Je mets a jour l’article pour être plus précis.
      Merci

  2. Anne Allibrant Reply

    Bonjour,

    savez vous comment on ajoute plusieurs pièces jointes à un mail.
    Juste une aucun soucis mais plusieurs je ne trouve pas.

    Merci

    • Christophe BACH Post authorReply

      Bonjour,

      Pour cela, vous pouvez utliser la variable $Attachment:

      $Attachment = ‘C:\Dell\001.txt’, ‘C:\Dell\002.txt’, ‘C:\Dell\003.txt’

      Send-MailMessage -To $To -From $From -Cc $Cc -SmtpServer $SmtpServer -Credential $Credential -Port “587” -UseSsl -Subject $Subject -Body $Body -Attachments $Attachment -BodyAsHtml

      Ou alors, directement dans la cmdlet:,
      Send-MailMessage -To $To -From $From -Cc $Cc -SmtpServer $SmtpServer -Credential $Credential -Port “587” -UseSsl -Subject $Subject -Body $Body -Attachments ‘C:\Dell\001.txt’, ‘C:\Dell\002.txt’, ‘C:\Dell\003.txt’ -BodyAsHtml

Leave a Reply