Innerhalb von Skripten ist es oft notwendig Nachrichten zu versenden. Die einfachste Lösung dabei sind E-Mails. Während man bei Batch-Skripten noch die Hilfe von externen Kommandozeilen-Tools (beispielsweise Blat) benötigt, lassen sich aus PowerShell-Skripten direkt E-Mails versenden. In PowerShell 1.0 geschieht dies aber noch über einen kleinen Umweg. Dort müssen explizit .NET-Klassen verwendet werden. Ab PowerShell 2.0 ist das neue Cmdlet “Send-MailMessage” zum Versenden von E-Mails vorhanden. Es müssen lediglich ein paar Parameter übergeben werden.
Nachfolgend eine kurze Übersicht der möglichen Parameter:
Send-MailMessage [-Attachments <String[]>] [-Bcc <String[]>] [[-Body] <String>] [-BodyAsHtml]
[-Encoding <Encoding>] [-Cc <String[]>] [-DeliveryNotificationOption <DeliveryNotificationOptions>]
-From <String> [[-SmtpServer] <String>] [-Priority <MailPriority>] [-Subject] <String> [-To] <String[]>
[-Credential <PSCredential>] [-UseSsl] [-Port <Int32>] [<CommonParameters>]
E-Mails versenden via “Send-MailMessage”
Beim Aufruf des Cmdlets müssen einige Parameter übergeben werden. Neben dem SMTP-Server muss ein Absender, ein Empfänger, ein Betreff und ein Text angegeben werden. Hier ein kurzes Beispiel:
Send-MailMessage -SmtpServer "mail.gmx.de" -to "EMPFÄNGER@mail.de"
-from "ABSENDER <ABSENDER@mail.de>" -Subject "Betreff"
-body "Test für Send-MailMessage"
Selbstverständlich bietet das Cmdlet aber noch weitere Möglichkeiten. So können unter anderem auch HTML-Mails und Anhänge versendet werden. Auch die Anmeldung am SMTP-Server und die Nutzung von SSL ist möglich. Die Angabe eines spezifischen Ports ist leider erst mit PowerShell 3.0 möglich.
$SMTPServer = "SMTP-SERVER"
$username = "USERNAME"
$password = ConvertTo-SecureString "PASSWORD" -AsPlainText -Force
$From = "ABSENDER@mail.com"
$To = "EMPFÄNGER@mail.com"
$Subject = "Betreff"
$Body = @"
Nachricht
Nachricht
"@
$Attachments = "C:\PFAD_ZUM_ANHANG\BILD.jpg"
#################################################################
$creds = New-Object System.Management.Automation.PSCredential
($username, $password)
Send-MailMessage -To $To -From $From -Subject $Subject -Body $Body
-SmtpServer $SMTPServer -Credential $creds
-encoding ([System.Text.Encoding]::UTF8)
-Attachments $Attachments -UseSsl
Ich biete das Skript auch zum Download an. Vor der Verwendung müssen alle Felder oberhalb der Trennlinie den eigenen Bedürfnissen angepasst werden. Ebenso ist eine Version für GMail vorhanden, die allerdings erst ab PowerShell 3.0 funktioniert.
Download PowerShell Skript
Neueste Kommentare