Send Eulanda Mail
Zuletzt geändert: 07.04.2026 07:05

Übersicht

Send-EulandaMail #

ÜBERSICHT #

Versendet ein Mail-Objekt über den konfigurierten oder angegebenen Provider.

SYNTAX #

Send-EulandaMail [-Mail] <PSCustomObject> [[-Provider] <string>] [[-Conn] <__ComObject>] [[-Udl]
    <string>] [[-ConnStr] <string>] [[-AddressId] <int>] [[-GraphTenantId] <string>]
    [[-GraphClientId] <string>] [[-GraphClientSecret] <string>] [[-SmtpServer] <string>]
    [[-SmtpPort] <int>] [-SmtpUseSsl] [[-SmtpUser] <string>] [[-SmtpPassword] <secureString>]

BESCHREIBUNG #

Die Funktion Send-EulandaMail nimmt ein von New-EulandaMail erzeugtes Mail-Objekt und versendet es über den angegebenen Provider. Sie ist der zentrale Dispatcher für alle E-Mail-Versandwege in EulandaXtools.

Jeder Provider wird intern an eine eigenständige Funktion delegiert: Send-GraphMail, Send-SmtpMail, Send-MapiMail bzw. Send-OutlookMail. Diese können auch direkt aufgerufen werden.

PROVIDER-ÜBERSICHT ==================

Graph (Send-GraphMail) Microsoft Graph API über REST. Erfordert Azure App-Registrierung mit TenantId, ClientId und ClientSecret. Unterstützt HTML (vollständig), Anhänge, Inline-Bilder, From (Service-Flow: jedes Postfach im Tenant; User-Flow: Shared Mailboxes). Vollständig headless, kein lokaler Mail-Client erforderlich. Ideal für Server- und Cloud-Umgebungen.

SMTP (Send-SmtpMail) Direkter SMTP-Versand über konfigurierbaren Server. Unterstützt HTML (via -BodyAsHtml), TLS/SSL, verschiedene Authentifizierungsmethoden (Credential, User/Password, anonym) und Anhänge. Vollständig headless, kein lokaler Mail-Client erforderlich. Funktioniert mit jedem SMTP-Server (Office 365, interne Relays, Hoster).

EasyMAPI (Send-MapiMail) Simple MAPI über MAPI32.DLL. Nutzt den auf dem System registrierten Standard-Mail-Client — primär gedacht für Thunderbird, Tobit David, eM Client und andere MAPI-kompatible Clients. Kein eigener From-Parameter (Absender ist immer das Standardkonto des Clients).

WICHTIG: Simple MAPI unterstützt KEIN HTML. Übergebener HTML-Inhalt wird automatisch in Plain Text konvertiert (<br> → Zeilenumbruch, Tags entfernt). Wenn HTML-Formatierung beim Empfänger erhalten bleiben muss, einen anderen Provider verwenden.

ACHTUNG: Wenn Microsoft Outlook als Standard-Mail-Client registriert ist (nicht Thunderbird/Tobit), zeigt Windows beim MAPI-Aufruf einen Sicherheitsdialog mit Countdown-Timer an (“Ein Programm versucht, in Ihrem Namen eine E-Mail zu senden…”). Dieser “Object Model Guard” blockiert den headless-Betrieb. In diesem Fall stattdessen Provider OutlookOLE verwenden.

OutlookOLE (Send-OutlookMail) Outlook COM-Automatisierung (OLE). Erfordert installiertes Microsoft Outlook (2016, 2019, 2021 oder Microsoft 365 Desktop-App). Unterstützt HTML (vollständig, inkl. CSS/Styles), Anhänge, und From über SentOnBehalfOfName (Shared Mailboxes, Stellvertretung). Vollständig headless — im Gegensatz zu EasyMAPI löst die COM-Automatisierung KEINEN Sicherheitsdialog aus.

PROVIDER-AUSWAHL =================

| Provider | HTML | From | Headless | Voraussetzung | |————-|——|———|———-|——————————-| | Graph | Ja | Ja | Ja | Azure App-Registrierung | | SMTP | Ja | Ja | Ja | SMTP-Server | | EasyMAPI | Nein | Nein | Ja* | MAPI-Client (Thunderbird etc) | | OutlookOLE | Ja | Ja | Ja | Outlook installiert |

*) EasyMAPI: Headless nur wenn NICHT Outlook der MAPI-Handler ist. Bei Outlook als MAPI-Client erscheint ein Sicherheitsdialog.

DIALOG ====== Wenn das Mail-Objekt ShowDialog = $true hat, wird VOR dem Versand der universelle WPF-Mail-Dialog (Show-MailDialog) angezeigt. Der Benutzer kann dort To, Cc, Bcc, Subject, Body und Anhänge bearbeiten. Erst nach Klick auf “Senden” wird der eigentliche Provider-Versand durchgeführt. Der Dialog ist einheitlich für alle Provider — der Provider selbst sendet immer headless.

AUTO-ERKENNUNG ============== Bei Provider = 'Auto' (Standard) wird der Provider aus der EULANDA SQL-Registry gelesen (\SYSTEM\Devices\EMail\Provider). Unterstützte Werte: Graph, SMTP, MAPI, Outlook, none. Ohne DB-Verbindung oder bei fehlendem Registry-Eintrag wird Graph als Fallback verwendet.

WHATIF / TESTMODUS ================== Mit -WhatIf wird kein Versand durchgeführt. Stattdessen wird ein Objekt zurückgegeben, das alle Felder enthält, die gesendet worden wären (To, From, Cc, Bcc, Subject, HtmlBody, Attachments, Provider).

PARAMETER #

-Mail #

Type: PSCustomObject

Ein von New-EulandaMail erzeugtes Mail-Objekt (PSCustomObject).

-Provider #

Type: string
Default: 'Auto'

Der zu verwendende Mail-Provider: Auto, Graph, SMTP, EasyMAPI oder OutlookOLE. Standard: Auto (aus SQL-Registry).

-Conn #

Type: __ComObject

ADODB.Connection für SQL-Registry-Zugriff (Provider-Erkennung, Credentials).

-Udl #

Type: string

UDL-Datei für Datenbankverbindung.

-ConnStr #

Type: string

ADO-Connection-String.

-AddressId #

Type: int

Adress-ID für die Kontaktliste im Mail-Dialog.

-GraphTenantId #

Type: string

Azure Tenant-ID (übersteuert SQL-Registry).

-GraphClientId #

Type: string

Azure Client-ID (übersteuert SQL-Registry).

-GraphClientSecret #

Type: string

Azure Client-Secret (übersteuert SQL-Registry).

-SmtpServer #

Type: string

SMTP-Server (übersteuert SQL-Registry).

-SmtpPort #

Type: int
Default: 587

SMTP-Port. Standard: 587.

-SmtpUseSsl #

Type: switch

SSL/TLS für SMTP verwenden.

-SmtpUser #

Type: string

SMTP-Benutzername.

-SmtpPassword #

Type: secureString

SMTP-Passwort (SecureString).

AUSGABEN #

PSCustomObject

Objekt mit: Success ([bool]), Provider ([string]), ErrorMessage ([string]). Bei -WhatIf zusätzlich: WhatIf, To, From, Cc, Bcc, Subject, HtmlBody, Attachments.

BEISPIELE #

# Headless: Mail erstellen und per Auto-Provider versenden
$mail = New-EulandaMail -To "kunde@firma.de" -Subject "Rechnung" `
  -HtmlBody "<p>Anbei...</p>" -Attachments "C:\RE.pdf"
Send-EulandaMail -Mail $mail -Udl "C:\Prod.udl"
# Mit Dialog: Benutzer kann bearbeiten, dann wird versendet
$mail = New-EulandaMail -To "kunde@firma.de" -Subject "Rechnung" `
  -HtmlBody "<p>Anbei...</p>" -Attachments "C:\RE.pdf" -ShowDialog
Send-EulandaMail -Mail $mail -Udl "C:\Prod.udl"
# Explizit SMTP mit Dialog
$mail = New-EulandaMail -To "kunde@firma.de" -Subject "Test" `
  -HtmlBody "Hallo" -ShowDialog
Send-EulandaMail -Mail $mail -Provider SMTP -SmtpServer "mail.firma.de"
# EasyMAPI für Thunderbird/Tobit-Umgebungen (Plain Text)
$mail = New-EulandaMail -To "kunde@firma.de" -Subject "Rechnung" `
  -HtmlBody "<p>Anbei...</p>" -Attachments "C:\RE.pdf"
Send-EulandaMail -Mail $mail -Provider EasyMAPI
# OutlookOLE: HTML-Mail headless über Outlook (kein Sicherheitsdialog)
$mail = New-EulandaMail -To "kunde@firma.de" -Subject "Rechnung" `
  -HtmlBody "<p>Anbei Ihre <b>Rechnung</b>.</p>" -Attachments "C:\RE.pdf"
Send-EulandaMail -Mail $mail -Provider OutlookOLE
# WhatIf / Testmodus: zeigt was gesendet würde, ohne echten Versand
$mail = New-EulandaMail -To "kunde@firma.de" -Subject "Test" -HtmlBody "Hallo"
$result = Send-EulandaMail -Mail $mail -Udl "C:\Prod.udl" -WhatIf
# $result enthält To, From, Subject, Provider etc. zur Inspektion