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
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
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
Utilisé pour un script de monitoring. Top!
Bonjour,
savez vous comment on ajoute plusieurs pièces jointes à un mail.
Juste une aucun soucis mais plusieurs je ne trouve pas.
Merci
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