SMTP Mails

Posted on: 11. September 2018
Emails versenden mit PowerSHELL über einen SMTP Server ist sowohl einfach wie auch flexibel. Hier schauen wir uns ein paar Optionen an, wie du Mails mit verschiedenen Parametern und sogar mehreren Anhängen verschicken kannst. Wir verwenden dazu zwei Klassen des .NET Frameworks.
Hier der Code aus dem Youtube-Video. Die Vorgehensweise und Bemerkungen findest du direkt als Kommentare (#Grün) im Code. So wird er dir ebenfalls in der PowerSHELL ISE angezeigt werden.
——————————————–
# SMTP Client Objekt erstellen            
$SmtpClient = new-object system.net.mail.smtpClient
# Mail Nachricht Objekt erstellen            
$MailNachricht = New-Object System.Net.Mail.MailMessage            

# Server und Credentials            
$SmtpServer = "mail.germanpowershell.com" # Adresse SMTP Server            
$Benutzer = "senden@germanpowershell.com" # SMTP Benutzer oder Email-Adresse je nach Mailserver            
$Passwort = "Start1234" # Passwort des Senders zur Authentifizierung            
$Credentials = New-Object System.Management.Automation.PSCredential($Benutzer,($Passwort | ConvertTo-SecureString -AsPlainText -Force))            

# Absender und Empfänger            
$MailAbsender = "germanpowershell <senden@germanpowershell.com>" # Absenderadresse            
$MailAntwortAn = "tom@germanpowershell.com" # Abweichende AntwortAn Adresse, falls benötigt sonst ""            
$MailEmpfaenger = "empfangen@germanpowershell.com" # Empfängeradresse            
$MailCCEmpfaenger = "" # CC Kopie Empfänger, falls benötigt sonst ""            
$MailBCCEmpfaenger = "" # BCC Kopie Empfänger, falls benötigt sonst ""            

# Mail Inhalt            
$Betreff = "Testnachricht"            
$Inhalt = "<b>ACHTUNG:</b><p>Dies ist<br>eine HTML<br>Email Nachricht<p>Freundliche Grüsse"

# Mail Optionen            
$MailHTML = $true # Wenn HTML Text $true sonst $false            
$SSLBenutzen = $true # Falls für das Versenden SSH/TLS verwendet wird $true sonst $false            
$Prioritaet = "High" # High, Low, Normal            

# Mail Anhang/Anhänge (Absoluter Pfad auf Datei in "", mehrere durch Komma trennen)            
$Anhaenge = "C:\Script\test1.txt","C:\Script\test2.txt","C:\Script\test3.txt"            

# Nachricht zusammensetzen            
$MailNachricht.From = $MailAbsender            
$MailNachricht.To.add($MailEmpfaenger)            
if ($MailCCEmpfaenger) {$MailNachricht.CC.Add($MailCCEmpfaenger)} # CC Hinzufügen falls gebraucht            
if ($MailBCCEmpfaenger) {$MailNachricht.Bcc.Add($MailBCCEmpfaenger)} # BCC Hinzufügen falls gebraucht            
$MailNachricht.Subject = $Betreff            
if ($MailHTML) {$MailNachricht.IsBodyHtml = 1} # Falls HTML Inhalt, dies hier festlegen            
$MailNachricht.Body = $Inhalt # Inhalt setzen            
if ($MailAntwortAn) {$MailNachricht.ReplyTo = $MailAntwortAn} # Falls anderer Antwortempfänger, hier setzen            

# Anhang/Anhänge konstruieren, es können beliebig viele hinzugefügt werden            
if ($Anhaenge.Count -ne 0)            
    {            

    foreach ($att in $Anhaenge)            
        {            

            $MailNachricht.Attachments.Add($att)            

        }            
    }            

# Mail Optionen einstellen            
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {return  $true} # Jedes Remotezertifikat akzeptieren            
$MailNachricht.Priority = $Prioritaet # Priorität setzen            
$MailNachricht.BodyEncoding = [System.Text.Encoding]::UTF8 # Standard-Codierung für deutsche Sprachen            
$SmtpClient.Credentials = $Credentials # Credentials setzen            
if ($SSLBenutzen){$SmtpClient.EnableSsl = $true} # Falls SSH Benötigt wird, dies festlegen            

# Nachricht versenden            
$SmtpClient.Host = $SmtpServer # SMTP Mail Server angeben
$SmtpClient.Port = 465 
$SmtpClient.Send($MailNachricht) # Nachricht versenden
——————————————–
Solltest du irgendwelche Fragen haben, dann kannst du diese gerne entweder hier im Blog oder direkt unter dem YouTube Video stellen. Ich gebe alles, deine Fragen zeitnahe zu beantworten oder ein entsprechendes Video darüber zu machen.
Gerade die Grundlagen-Videos werde ich nicht mit viel Text ausschmücken. Bei mir ist jeweils jede Code-Zeile direkt im Code Kommentiert (#Grün). Du kannst den Code direkt mit in dein Script kopieren und hast so eine gute Orientierungshilfe, sobald du die Scripts auf deine Bedürfnisse anpasst.

Ich erstelle und veröffentliche sämtliche Videos kostenlos und blende auch keine Werbung ein, dies will ich auch so beibehalten. Da das vermittelte Wissen aber in teuren Kursen erlangt werden kann, ist eine kleine Spende hin und wieder sicher keine schlechte Gegenleistung.


Unterstützt den Blog und Kanal:
YouTube
YouTube
LinkedIn
Follow by Email
Facebook
Google+
https://germanpowershell.com/smtp-mails">
RSS
Twitter