Send Mapi Mail
Zuletzt geändert: 04.08.2026 16:08

Übersicht

Send-MapiMail #

ÜBERSICHT #

Sendet eine E-Mail über Simple MAPI (MAPI32.DLL) — den auf dem System registrierten Standard-Mail-Client.

SYNTAX #

Send-MapiMail [-To] <string[]> [[-Cc] <string[]>] [[-Bcc] <string[]>] [-Subject] <string>
    [[-HtmlBody] <string>] [[-Body] <string>] [[-Attachments] <string[]>] [-Detailed]
    [<CommonParameters>]

BESCHREIBUNG #

Send-MapiMail versendet E-Mails über die Simple MAPI Schnittstelle (MAPISendMail in MAPI32.DLL). Simple MAPI ist ein Windows-Standard, der von jedem MAPI-kompatiblen Mail-Client implementiert wird — z. B. Mozilla Thunderbird, Tobit David, Windows Mail, eM Client oder auch Microsoft Outlook.

Der Versand erfolgt vollständig headless (ohne eigene UI). Die Nachricht wird direkt an den registrierten MAPI-Handler übergeben, der sie in die Outbox des Mail-Clients einreiht und über dessen konfigurierten Transportweg (IMAP/SMTP, Exchange, etc.) versendet.

HTML-UNTERSTÜTZUNG #

Simple MAPI unterstützt ausschließlich Plain Text (kein HTML, kein RTF). Wird -HtmlBody übergeben, konvertiert die Funktion automatisch:

  • <br> und <br/> werden zu echten Zeilenumbrüchen (CR+LF)
  • Alle übrigen HTML-Tags werden entfernt (Tag-Stripping)
  • Das Ergebnis ist reiner Text ohne Formatierung

Wenn HTML-Formatierung im Posteingang des Empfängers erhalten bleiben soll, muss ein anderer Provider verwendet werden (Graph, SMTP oder OutlookOLE).

ABSENDER (FROM) #

Simple MAPI unterstützt keinen expliziten Absender. Der Versand erfolgt immer über das Standardkonto des registrierten MAPI-Clients. Es gibt keinen -From-Parameter.

SICHERHEITSHINWEIS — OUTLOOK ALS MAPI-CLIENT #

Wenn Microsoft Outlook als Standard-Mail-Client registriert ist, zeigt Windows beim Aufruf von MAPISendMail einen Sicherheitsdialog an:

"Ein Programm versucht, in Ihrem Namen eine E-Mail zu senden.
Möchten Sie dies zulassen?"

Dieser Dialog hat einen Countdown-Timer und blockiert den headless-Betrieb. Das ist ein Schutzmechanismus von Outlook (“Object Model Guard”) gegen unautorisierten Mailversand.

Empfehlung: Wenn Outlook installiert ist, stattdessen den Provider OutlookOLE verwenden (Send-OutlookMail). Dieser nutzt die COM-Schnittstelle von Outlook direkt und löst keinen Sicherheitsdialog aus.

Simple MAPI eignet sich daher primär für Systeme mit Thunderbird, Tobit David oder anderen MAPI-Clients, die keinen solchen Guard implementieren.

DIALOG #

Diese Funktion enthält keinen eigenen Bearbeitungsdialog. Wenn ein interaktiver Dialog gewünscht ist (To/Cc/Bcc/Subject/Body bearbeiten), wird dieser von Send-EulandaMail über Show-MailDialog vorgeschaltet — einheitlich für alle Provider.

PARAMETER #

-To #

Type: string[]

Empfängeradresse(n). Erlaubt komma-/semikolongetrennten String oder String-Array. Mindestens ein Empfänger ist erforderlich.

-Cc #

Type: string[]

Optionale CC-Empfänger. Komma-/semikolongetrennt oder String-Array.

-Bcc #

Type: string[]

Optionale BCC-Empfänger. Komma-/semikolongetrennt oder String-Array.

-Subject #

Type: string

Betreffzeile der E-Mail.

-HtmlBody #

Type: string

HTML-formatierter Inhalt. Wird automatisch in Plain Text konvertiert, da Simple MAPI kein HTML unterstützt. <br>-Tags werden zu Zeilenumbrüchen, alle anderen Tags werden entfernt.

-Body #

Type: string

Plain-Text-Inhalt. Hat Vorrang vor HtmlBody, wenn beides angegeben ist. Wird direkt ohne Konvertierung als NoteText an MAPI übergeben.

-Attachments #

Type: string[]

Optionale Dateipfade für Anhänge (String-Array). Jede Datei wird als MapiFileDesc an die MAPI-Nachricht angehängt.

-Detailed #

Type: switch

Liefert statt des Booleans ein Objekt mit Success, Cancelled und ErrorMessage. Ohne den Schalter bleibt das Verhalten unverändert (Boolean plus Warnung), damit bestehende Aufrufer nicht brechen.

Wichtig bei Simple MAPI: Schließt der Anwender den Sendedialog des Mail-Clients, meldet MAPI den Code 1 (MAPI_USER_ABORT). Das ist ein Abbruch und kein Fehler – mit -Detailed ist das an Cancelled erkennbar, ohne den Schalter sieht der Aufrufer nur $false.

AUSGABEN #

boolean

$true bei erfolgreichem Versand (MAPI-Return-Code 0), $false bei Fehler. Bei Fehlern wird zusätzlich eine Warnung mit dem MAPI-Fehlercode ausgegeben. pscustomobject Mit -Detailed: Success (boolean), Cancelled (boolean, $true bei MAPI_USER_ABORT) und ErrorMessage (Klartext, leer bei Erfolg).

BEISPIELE #

# Einfache Plain-Text-Mail über den Standard-MAPI-Client senden
Send-MapiMail -To 'kunde@firma.de' -Subject 'Rechnung' `
  -Body 'Anbei Ihre Rechnung.' -Attachments 'C:\Rechnungen\RE-123.pdf'
# HTML-Body wird automatisch in Plain Text konvertiert
Send-MapiMail -To 'kunde@firma.de' -Subject 'Auftragsbestätigung' `
  -HtmlBody '<p>Sehr geehrter Kunde,</p><p>Ihr Auftrag wurde <b>bestätigt</b>.</p>'
# Ergebnis im Mail-Client: "Sehr geehrter Kunde,\r\nIhr Auftrag wurde bestätigt."
# Mail mit CC und mehreren Anhängen
Send-MapiMail -To 'kunde@firma.de' -Cc 'buchhaltung@firma.de' `
  -Subject 'Dokumente' -Body 'Anbei die Unterlagen.' `
  -Attachments 'C:\Temp\Vertrag.pdf', 'C:\Temp\AGB.pdf'

HINWEISE #

Voraussetzung: Ein MAPI-kompatibler Mail-Client muss als Standard-Mail-Client registriert sein (z. B. Thunderbird, Tobit David, eM Client, Windows Mail).

Kompatibel mit PowerShell 5.1+