E-Mail per Powershell versenden

Eine E-Mail per Powershell zu senden ist bereits sehr lange möglich. Oft wird aber immer noch auf Tools von Drittanbietern zurückgegriffen. Dabei ist der Versand mit der Microsoft Powershell so einfach und schnell eingerichtet.



E-Mail mit der Powershell senden

Als großer Freund von Powershell Skripten und damit verbundenen Automationen nutze ich natürlich auch die Funktion zum Versenden von E-Mails. Damit kann ich mir Ergebnisse von geplanten Tasks zusenden, Informationen weiterleiten oder ganz allgemein, mich über den Abschluss von Aufgaben informieren lassen.

Wozu man früher noch umständlich Drittanbieter Tools wie z.B. „blat“ genutzt hat, verwendet man heute die Windows Powershell. Diese ist auf jedem Windows Server und Windows Computer bereits Bestandteil des Betriebssystems und lässt sich daher ohne großen Aufwand nutzen. Und sie kann regelmäßig per Windows Update aktualisiert werden.

Das CMDlet, mit dem eine E-Mail per Powershell gesendet werden kann, lautet Send-MailMessage. Diesem Befehl müssen dann noch die Parameter für Server, Betreff, Body usw. mitgegeben werden. Eine vollständige Auflistung der Möglichkeiten erhält man durch die Eingabe von Get-Help Send-MailMessage (ggfs. mit dem Zusatz -online) – oder direkt hier.

Eine simple E-Mail mit Betreff und einem Text würde dann so gesendet werden:

Send-MailMessage -To "xyz@tech-faq.net" -From "abc@tech-faq.net" -Subject "Das ist der Betreff" -Body "Das ist der Inhalt" -SmtpServer "server.tech-faq.net"

Parameter in Variablen speichern

Da ich die Funktion häufig in Skripten nutze, speichere ich die Angaben zu SMTP-Server, Betreff etc. gerne in Variablen. Dadurch muss ich bei Änderungen nicht das komplette Skript nach dem Befehl durchsuchen sondern brauche einfach nur den Inhalt der Variable (meist zu Beginn des Skriptes“ editieren. Das sieht dann z.B. folgendermaßen aus:

$to = "xyz@tech-faq.net"
$from = "abc@tech-faq.net"
$mailserver = "server.tech-faq.net"
$Betreff = "Das ist der Betreff"
$Body = "Das ist der Inhalt"

# Skriptinhalt
# .
# .
# .

Send-MailMessage -To $to -From $from -Subject $Betreff -Body $body -SmtpServer $mailserver
E-Mail per Powershell versenden
Versenden einer E-Mail per Powershell
E-Mail mit Powershell versendet
E-Mail in Outlook

Text mit Umlauten per Powershell E-Mail senden

Wenn die Umlaute und Sonderzeichen in einer per Powershell gesendeten E-Mail nicht korrekt angezeigt werden, sondern in Hieroglyphen umgewandelt wurden, liegt das an der falschen Kodierung der E-Mail. Hier muss dann der Parameter Encoding genutzt werden. Mit dem folgenden Parameter werden Umlaute und Sonderzeichen richtig übermittelt: (einfach hinten anhängen)

Send-MailMessage -To ....... -Encoding ([System.Text.Encoding]::UTF8)

Disclaimer zu CMDlet Send-MailMessage

Standardmäßig verwendet Send-MailMessage eine unverschlüsselte Verbindung zum Mailserver. Mit dem Parameter „-UseSSL“ kann die Verschlüsselung genutzt werden. Microsoft weist das CMDlet inzwischen selbst als veraltet aus, da es keine sichere Verbindungen mit dem SMTP-Server garantiert. Allerdings gibt es bisher keinen Ersatz für das CMDlet in der Windows PowerShell. Der Einsatz sollte daher immer mit Bedacht erfolgen.

Ebenfalls interessant:

Dieser Artikel ist wie alle anderen auf dieser Seite kostenlos für Dich und ich hoffe, ich konnte Dir weiterhelfen. Wer möchte, kann diesem Blog eine kleine Aufmerksamkeit in Form einer kleinen Spende (PayPal) oder über die Amazon Wunschliste zukommen lassen.

Schreibe einen Kommentar