Send-SmtpMail #
ÜBERSICHT #
Sendet eine E-Mail über einen SMTP-Server mit optionaler Authentifizierung und Anhängen.
SYNTAX #
Send-SmtpMail [-From] <string> [-To] <string[]> [[-Cc] <string[]>] [[-Bcc] <string[]>] [[-ReplyTo]
<string>] [-SmtpServer] <string> [[-Priority] <string>] [[-Encoding] <string>] [[-User]
<string>] [[-PlainPassword] <string>] [[-Password] <secureString>] [[-Credential]
<psCredential>] [-UseSsl] [-BodyAsHtml] [[-Port] <int>] [[-DeliveryNotificationOption]
<string[]>] [-Subject] <string> [[-Body] <string>] [[-Attachment] <string[]>]
[<CommonParameters>]
BESCHREIBUNG #
Diese Funktion sendet eine E-Mail über einen konfigurierbaren SMTP-Server. Sie unterstützt Klartext- und SecureString-basierte Authentifizierung, sowie auch den Versand ganz ohne Authentifizierung (z. B. an interne Relay-Server). Die Nachricht kann HTML oder reinen Text enthalten und optional Anhänge mitliefern.
Die Authentifizierungslogik arbeitet nach folgendem Schema:
- Wenn -Credential angegeben ist, wird dieses verwendet.
- Falls kein Credential angegeben ist, aber -User und -Password (SecureString), wird ein Credential erzeugt.
- Falls kein Password, aber -User und -PlainPassword vorhanden sind, wird ebenfalls ein Credential erzeugt.
- Wird nur -User angegeben, aber kein Passwort, wird ein Fehler erzeugt (catch → false).
- Wenn gar kein Benutzer angegeben ist, erfolgt der Versand ohne Authentifizierung.
Die Funktion setzt automatisch TLS (1.0 bis 1.2) als Protokoll und unterstützt verschiedene Zeichencodierungen.
PARAMETER #
-From #
Type: string
Absenderadresse der E-Mail.
-To #
Type: string[]
Empfängeradresse(n) der E-Mail (ein oder mehrere).
-Cc #
Type: string[]
Optionale CC-Empfänger.
-Bcc #
Type: string[]
Optionale BCC-Empfänger.
-ReplyTo #
Type: string
Default: $From
Reply-To-Adresse. Standard ist die Absenderadresse (From).
-SmtpServer #
Type: string
Hostname oder IP-Adresse des SMTP-Servers.
-Priority #
Type: string
Default: 'Normal'
E-Mail-Priorität: Normal, High oder Low. Standard: Normal.
-Encoding #
Type: string
Default: 'utf8'
Zeichencodierung der Nachricht (z.B. utf8, ascii). Standard: utf8.
-User #
Type: string
Benutzername für die SMTP-Authentifizierung. Ohne Angabe erfolgt anonymer Versand.
-PlainPassword #
Type: string
Klartext-Passwort für die Authentifizierung (wird intern in SecureString gewandelt).
-Password #
Type: secureString
Passwort als SecureString für die Authentifizierung.
-Credential #
Type: psCredential
PSCredential-Objekt für die Authentifizierung (hat Vorrang vor User/Password).
-UseSsl #
Type: switch
Aktiviert TLS/SSL für die Verbindung zum SMTP-Server.
-BodyAsHtml #
Type: switch
Wenn gesetzt, wird der Body als HTML interpretiert.
-Port #
Type: int
Default: 25
TCP-Port des SMTP-Servers. Standard: 25 (für TLS oft 587).
-DeliveryNotificationOption #
Type: string[]
Default: 'None'
Zustellbenachrichtigung: None, OnSuccess, OnFailure, Delay, Never. Standard: None.
-Subject #
Type: string
Betreffzeile der E-Mail.
-Body #
Type: string
Inhalt der Nachricht (Text oder HTML).
-Attachment #
Type: string[]
Optionale Dateipfade für Anhänge.
AUSGABEN #
boolean
$true bei erfolgreichem Versand, $false bei Fehler.
BEISPIELE #
# Sendet eine HTML-Mail ohne Authentifizierung an den Empfänger. Der SMTP-Server erlaubt anonyme Übertragung.
Send-SmtpMail -From 'info@firma.de' -To 'kunde@example.com' -SmtpServer 'mail.firma.de' `
-Subject 'Willkommen' -Body '<h1>Hallo!</h1>' -BodyAsHtml -UseSsl -Verbose
# Versendet eine E-Mail über einen internen Server mit Klartext-Anmeldung.
Send-SmtpMail -From 'noreply@example.com' -To 'admin@intern.local' `
-SmtpServer 'mail.intern.local' -User 'noreply' -PlainPassword 'Geheim123' `
-Subject 'Interner Bericht' -Body 'Erledigt.' -Verbose
# Sendet eine E-Mail über Office365 mit TLS und SecureString-Authentifizierung.
$sec = ConvertTo-SecureString 'Sicher123' -AsPlainText -Force
Send-SmtpMail -From 'support@example.com' -To 'kunde@example.com' `
-SmtpServer 'smtp.office365.com' -User 'support@example.com' -Password $sec `
-Subject 'Ticket 4711' -Body 'Wir melden uns zeitnah.' -UseSsl -Port 587 -Verbose
HINWEISE #
Kompatibel mit PowerShell 5.1+