Skip to content
Docs
BlogZur App

Outlook Mail ​

Liest, sendet und verwaltet E-Mails in jedem Microsoft-365-Postfach. Nutzt die Microsoft Graph API. Ideal für automatisierte Benachrichtigungen, Newsletter-Versand oder E-Mail-Überwachung.

Kategorie: Kommunikation | Quelldatei: outlookMailBlock.js | Auth: Ja (OAuth Microsoft 365)

Für Nutzer: in Tools & Apps Mit Microsoft anmelden. Die Azure-App richtet der Admin einmalig ein.

Im Agent Loop: Lesen, Suchen und Ordner ohne Nachfrage. Senden (send, sendDraft, reply, forward) braucht eine Freigabe-Karte im Chat und Graph Mail.Send am angemeldeten User. Im Planer/Hintergrund wird nicht gesendet — dafür den Outlook-Block direkt im Flow. App-Only / Application Permissions sind nicht erlaubt.


Was kann dieser Block? ​

  • Senden: E-Mails versenden (Text und HTML), Entwürfe erstellen
  • Lesen: Posteingang durchsuchen, E-Mails lesen, neue Nachrichten abrufen
  • Antworten/Weiterleiten: Auf E-Mails antworten oder sie weiterleiten
  • Verwalten: E-Mails verschieben, löschen, als gelesen markieren
  • Ordner: Postfach-Ordner auflisten

Was brauche ich dafür? ​

Azure App Registration einrichten ​

Du brauchst Zugriff auf das Azure Portal (https://portal.azure.com) und einen Microsoft 365 Tenant.

Schritt 1 — App erstellen:

  1. Azure Portal → Azure Active Directory → App registrations → New registration
  2. Name eingeben (z.B. "Uella Outlook")
  3. Accounts in this organizational directory only wählen
  4. Register klicken
  5. Application (client) ID und Directory (tenant) ID notieren

Schritt 2 — Client Secret erstellen:

  1. In der App → Certificates & secrets → New client secret
  2. Beschreibung und Gültigkeitsdauer wählen
  3. Value sofort kopieren — wird nur einmal angezeigt
  4. Ablaufdatum notieren

Schritt 3 — Berechtigungen setzen:

  1. API permissions → Add a permission → Microsoft Graph → Delegated permissions (nicht Application / App-Only)
  2. Hinzufügen: Mail.Read, Mail.Send (optional Mail.Send.Shared für Shared Mailbox)
  3. Grant admin consent nur wenn euer Tenant das verlangt. Die Rechte gelten trotzdem nur so weit, wie der angemeldete User in Exchange darf.

Schritt 4 — In Uella verbinden: In Tools & Apps Mit Microsoft anmelden. Tenant/Client/Secret richtet der Admin einmalig ein. mailboxUser leer = eigenes Postfach. Shared Mailbox nur mit Send-As oder Vollzugriff dieses Users.


So benutzt du den Block ​

E-Mail senden ​

Prompt: "Sende eine E-Mail an team@uella.ch mit Betreff 'Wochenbericht' und Text 'Bericht ist im Anhang.'"

Ergebnis: Freigabe-Karte im Chat. Nach Bestätigung wird die Mail über das Postfach des angemeldeten Users gesendet. Ohne Mail.Send oder ohne Send-As auf eine Shared Mailbox schlägt es fehl.

Posteingang durchsuchen ​

Prompt: "Suche E-Mails von support@example.com aus der letzten Woche"

Ergebnis: Liste der passenden E-Mails mit Betreff, Absender und Datum.

Letzte E-Mails anzeigen ​

Prompt: "Zeige mir die letzten 5 E-Mails"

Ergebnis: Liste mit Betreff, Absender, Datum und Lesestatus.

Geteiltes Postfach → eigenes Postfach ​

Prompt: „Nimm die letzte Mail vom Posteingang von info@uella.ch und verschiebe sie in mein Postfach.“

Der Agent soll u. a. operation: move, mailboxUser: info@uella.ch, folder: inbox, targetFolder: inbox setzen. Das Ziel-Postfach ist standardmässig dein angemeldeter UPN (sergio@uella.ch), sofern targetMailboxUser leer bleibt.

Hinweis: Verschieben zwischen zwei Postfächern kopiert die Mail per Graph API und entfernt sie optional aus dem Quellpostfach (kein natives Cross-Mailbox-move).

Eigene Mail ins geteilte Postfach (Unterordner) ​

Prompt: „Verschiebe die Mail mit Betreff XY aus meinem Posteingang in den Ordner Partner/Grischa Mechanik im Postfach info@uella.ch.“

Beispiel-Tool-Aufruf:

json
{
  "operation": "move",
  "mailboxUser": "sergio@uella.ch",
  "folder": "inbox",
  "subject": "XY",
  "targetMailboxUser": "info@uella.ch",
  "targetFolder": "Partner/Grischa Mechanik"
}

targetFolder ist der Pfad wie in Outlook (übergeordneter Ordner / Unterordner). Bei Unklarheit zuerst listFolders mit mailboxUser: info@uella.ch — im Ergebnis steht pro Ordner path.

Anhänge: Beim Verschieben zwischen Postfächern werden Dateianhänge mitkopiert (Graph-Limit ca. 3 MB pro Datei).

Im Kundenordner nach Absender suchen ​

Prompt: „Suche im Kundenordner Partner/Grischa Mechanik im Postfach info@uella.ch nach Mails von xy@example.com und liste sie auf.“

json
{
  "operation": "search",
  "mailboxUser": "info@uella.ch",
  "folder": "Partner/Grischa Mechanik",
  "from": "xy@example.com",
  "count": 20
}

from kann auch ein Stichwort sein (z.B. "metanet"), dann wird contains auf die Absender-Adresse verwendet.

Posteingang zusammenfassen ​

Prompt: „Fasse mir alle Mails aus dem Posteingang von info@uella.ch zusammen.“

Der Agent ruft typischerweise list auf und fasst die Ergebnisse im Chat zusammen:

json
{
  "operation": "list",
  "mailboxUser": "info@uella.ch",
  "folder": "inbox",
  "count": 50,
  "includeBody": true
}

includeBody: true liefert Volltext (gekürzt) — wichtig für sinnvolle Zusammenfassungen. Sehr viele Mails: count erhöhen oder pageToken für die nächste Seite.

Senden vom geteilten Postfach (mit Anhang) ​

Prompt: „Sende von info@uella.ch an kunde@example.com mit Text … und Anhang /uploads/…/datei.pdf.“

json
{
  "operation": "send",
  "mailboxUser": "info@uella.ch",
  "to": "kunde@example.com",
  "subject": "Betreff",
  "body": "Text",
  "filePath": "/uploads/userId/datei.pdf"
}

Exchange: Senden als auf info@ erforderlich. Anhänge > 3 MB nutzen Upload-Session automatisch.

Vorschau vor Aktion ​

confirm: true bei send, move, moveBatch, delete — liefert nur preview/wouldExecute, keine Änderung.

Stapelverschieben ​

Prompt: „Verschiebe alle ungelesenen Mails von xy@ im Ordner Partner/Kunde nach info@ / Ordner Archiv.“

json
{
  "operation": "moveBatch",
  "mailboxUser": "info@uella.ch",
  "folder": "Partner/Kunde",
  "from": "xy@",
  "onlyUnread": true,
  "targetFolder": "Archiv",
  "maxCount": 50
}

Kategorien / Markierung ​

json
{
  "operation": "patchMessage",
  "mailboxUser": "info@uella.ch",
  "messageId": "…",
  "categories": "Kunde,Dringend",
  "flag": "flagged"
}

Anhänge lesen ​

json
{
  "operation": "read",
  "mailboxUser": "info@uella.ch",
  "messageId": "…",
  "downloadAttachments": true
}

Liefert downloadPath unter /uploads/…/mail-attachments/ für den Agent.

Datumsfilter ​

receivedAfter: "7d" oder "2026-01-01" — kombinierbar mit list/search/moveBatch.


Alle Funktionen im Überblick ​

Lesen ​

OperationBeschreibung
listAuflisten (folder, from, Datum, pageToken, includeBody)
searchWie list, mindestens ein Suchkriterium
readVollständig inkl. Anhänge (downloadAttachments)
listFoldersOrdnerpfade für move

Senden ​

OperationBeschreibung
sendSenden inkl. filePath-Anhänge, mailboxUser = Absender
draftEntwurf + Anhänge
sendDraftEntwurf per messageId senden
reply / forwardmailboxUser = Postfach der Quell-Mail

Verwalten ​

OperationBeschreibung
moveEinzelmail, Cross-Mailbox, Anhänge, confirm
moveBatchMehrere Treffer nach Filter
patchMessagecategories, flag
delete / markReadEinzelmail

Häufige Probleme und Lösungen ​

ProblemLösung
403 ForbiddenAdmin Consent fehlt — im Azure Portal → API permissions → Grant admin consent
401 UnauthorizedClient Secret abgelaufen — im Azure Portal neues Secret erstellen
"Insufficient privileges"Berechtigungen müssen Application permissions sein (nicht Delegated!)
E-Mail wird nicht gesendetmailboxUser + Senden als auf Shared Mailbox; 403 → Graph-Hinweis im Fehler
Ordner nicht gefundenlistFolders → exakten path für targetFolder/folder
Secret läuft abAblaufdatum notieren, max. 24 Monate — rechtzeitig erneuern
Block wird vom AgentLoop nicht aufgerufenPrüfen ob der Outlook-Block in den enabledTools aktiviert ist


Technische Details ​

ParameterTypPflichtBeschreibung
operationSelectJaDie Aktion (send, list, search, reply etc.)
tenantIdTextJaAzure AD Tenant ID
clientIdTextJaAzure App Client ID
clientSecretPasswordJaAzure App Client Secret
mailboxUserTextJaE-Mail-Adresse des Postfachs