Send SMTP Mail
Zuletzt geändert: 14.03.2026 05:56

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:

  1. Wenn -Credential angegeben ist, wird dieses verwendet.
  2. Falls kein Credential angegeben ist, aber -User und -Password (SecureString), wird ein Credential erzeugt.
  3. Falls kein Password, aber -User und -PlainPassword vorhanden sind, wird ebenfalls ein Credential erzeugt.
  4. Wird nur -User angegeben, aber kein Passwort, wird ein Fehler erzeugt (catch → false).
  5. 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+