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:
- Azure Portal → Azure Active Directory → App registrations → New registration
- Name eingeben (z.B. "Uella Outlook")
- Accounts in this organizational directory only wählen
- Register klicken
- Application (client) ID und Directory (tenant) ID notieren
Schritt 2 — Client Secret erstellen:
- In der App → Certificates & secrets → New client secret
- Beschreibung und Gültigkeitsdauer wählen
- Value sofort kopieren — wird nur einmal angezeigt
- Ablaufdatum notieren
Schritt 3 — Berechtigungen setzen:
- API permissions → Add a permission → Microsoft Graph → Delegated permissions (nicht Application / App-Only)
- Hinzufügen:
Mail.Read,Mail.Send(optionalMail.Send.Sharedfür Shared Mailbox) - 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:
{
"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.“
{
"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:
{
"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.“
{
"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.“
{
"operation": "moveBatch",
"mailboxUser": "info@uella.ch",
"folder": "Partner/Kunde",
"from": "xy@",
"onlyUnread": true,
"targetFolder": "Archiv",
"maxCount": 50
}Kategorien / Markierung
{
"operation": "patchMessage",
"mailboxUser": "info@uella.ch",
"messageId": "…",
"categories": "Kunde,Dringend",
"flag": "flagged"
}Anhänge lesen
{
"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
| Operation | Beschreibung |
|---|---|
| list | Auflisten (folder, from, Datum, pageToken, includeBody) |
| search | Wie list, mindestens ein Suchkriterium |
| read | Vollständig inkl. Anhänge (downloadAttachments) |
| listFolders | Ordnerpfade für move |
Senden
| Operation | Beschreibung |
|---|---|
| send | Senden inkl. filePath-Anhänge, mailboxUser = Absender |
| draft | Entwurf + Anhänge |
| sendDraft | Entwurf per messageId senden |
| reply / forward | mailboxUser = Postfach der Quell-Mail |
Verwalten
| Operation | Beschreibung |
|---|---|
| move | Einzelmail, Cross-Mailbox, Anhänge, confirm |
| moveBatch | Mehrere Treffer nach Filter |
| patchMessage | categories, flag |
| delete / markRead | Einzelmail |
Häufige Probleme und Lösungen
| Problem | Lösung |
|---|---|
| 403 Forbidden | Admin Consent fehlt — im Azure Portal → API permissions → Grant admin consent |
| 401 Unauthorized | Client Secret abgelaufen — im Azure Portal neues Secret erstellen |
| "Insufficient privileges" | Berechtigungen müssen Application permissions sein (nicht Delegated!) |
| E-Mail wird nicht gesendet | mailboxUser + Senden als auf Shared Mailbox; 403 → Graph-Hinweis im Fehler |
| Ordner nicht gefunden | listFolders → exakten path für targetFolder/folder |
| Secret läuft ab | Ablaufdatum notieren, max. 24 Monate — rechtzeitig erneuern |
| Block wird vom AgentLoop nicht aufgerufen | Prüfen ob der Outlook-Block in den enabledTools aktiviert ist |
Weiterführende Links
- Microsoft Graph Mail API: https://learn.microsoft.com/en-us/graph/api/resources/mail-api-overview
- Azure App Registration: https://portal.azure.com
- Graph Explorer (Testen): https://developer.microsoft.com/en-us/graph/graph-explorer
Technische Details
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
operation | Select | Ja | Die Aktion (send, list, search, reply etc.) |
tenantId | Text | Ja | Azure AD Tenant ID |
clientId | Text | Ja | Azure App Client ID |
clientSecret | Password | Ja | Azure App Client Secret |
mailboxUser | Text | Ja | E-Mail-Adresse des Postfachs |