Skip to content

Feature: Outlook-Integration (Office-Add-In) "An PBP senden" mit Thread-Upload #480

@MadGapun

Description

@MadGapun

Idee

Analog zum Thunderbird-Add-On aus #478 soll es auch fuer Microsoft Outlook eine Moeglichkeit geben, Mails per Rechtsklick oder Menue-Eintrag an PBP zu schicken — idealerweise inklusive Thread-Kontext (eingehende und ausgehende Mails).

Outlook ist im deutschen Business-Umfeld der dominante Mail-Client. Viele Recruiter-Antworten landen in Firmen- oder Kunden-Outlooks, nicht in Thunderbird. Wer zwischen Thunderbird (privat) und Outlook (beruflich) wechselt, braucht beide Wege.

Voraussetzung

Der PBP-seitige HTTP-Endpunkt aus #478 (POST /api/mail/inbox mit Token-Auth) ist die gemeinsame Infrastruktur. Das Outlook-Add-In ruft denselben Endpunkt auf. DB-Schema-Erweiterungen fuer thread_id etc. sind ebenfalls schon in #478 vorgesehen.

Dieses Issue hier beschreibt nur den Outlook-Client.

Drei Technologie-Optionen fuer Outlook

Option A: Office-Add-In (JavaScript/HTML) — empfohlen

Modernes Microsoft-Framework, basiert auf HTML/JS/CSS. Laeuft in:

  • Outlook fuer Windows (neues Outlook und klassisches Outlook ab Version 2016+)
  • Outlook fuer Mac
  • Outlook im Web (outlook.office.com / outlook.live.com)
  • Outlook Mobile (iOS/Android)

Eine Codebase fuer alle Plattformen. Microsoft's strategisch bevorzugter Weg.

Vorteile:

  • Cross-Platform inkl. Webmail und Mobile
  • Zentrale Verteilung ueber Microsoft AppSource oder Unternehmens-Catalog
  • Gleiche WebExtensions-aehnliche Architektur wie Thunderbird-Add-On
  • Keine Installation pro Maschine, sondern an Office-365-Account gebunden

Nachteile:

  • Manifest-basiert, Entwicklung ist etwas ungewohnt
  • Zugriff auf Mail-Inhalte ueber die Office.js-API, nicht direkt auf .msg/.eml-Dateien
  • Rechtsklick-Kontextmenues in Mails nur eingeschraenkt moeglich, meist als Taskpane/Banner oder Ribbon-Button

Rechtsklick-Alternative: Im klassischen Outlook gibt es keinen direkten "Rechtsklick in der Mailliste"-Hook fuer Add-Ins. Stattdessen erscheint der PBP-Button:

  • im Ribbon oben bei geoeffneter Mail ("An PBP senden")
  • als Taskpane am rechten Rand bei selektierter Mail
  • als Eintrag im Message-Actions-Menue (das "..."-Menue oben rechts bei einer geoeffneten Mail)

Option B: VSTO-Add-In (C#/.NET) — klassisch

Traditionelles Outlook-Add-In, geschrieben in C# mit Visual Studio Tools for Office. Laeuft nur auf Windows mit klassischem Outlook-Desktop.

Vorteile:

  • Sehr tiefe Integration — echte Rechtsklick-Menue-Erweiterung moeglich
  • Voller Zugriff auf Outlook-Objektmodell (Mails, Folder, Calendar, Kontakte)
  • Kann auch auf den Sent-Ordner zugreifen und eigene Antworten zuordnen
  • Bewaehrte Technik seit ueber 15 Jahren

Nachteile:

  • Nur Windows-Outlook-Desktop — nicht Web, nicht Mac, nicht Mobile
  • Installation als MSI-Package pro Rechner
  • C#/.NET-Entwicklung (nicht JavaScript)
  • Microsoft foerdert diese Technologie nicht mehr aktiv

Option C: Power Automate / Outlook-Regel + Webhook — No-Code

Microsoft Power Automate kann Flows bauen: "Wenn eine Mail mit Flag 'PBP' markiert wird → HTTP-POST an PBP-Endpunkt". Alternativ: klassische Outlook-Regeln mit Weiterleitung an eine PBP-Mail-Adresse (entspricht Ansatz B aus #478 — IMAP-Abholung).

Vorteile:

  • Keine Entwicklung noetig, nur Konfiguration durch User
  • User kann eigene Trigger definieren (Flag, Kategorie, Absender, Folder)
  • Funktioniert mit allen Outlook-Varianten

Nachteile:

  • Thread-Kontext geht verloren (nur die einzeln markierte Mail wird uebertragen)
  • Kein natives Rechtsklick-Menue, User muss die Mail vorher taggen
  • Setup-Aufwand beim User: Flow einrichten, authentifizieren
  • Eigene Antworten aus dem Sent-Ordner werden nicht automatisch erfasst

Empfehlung

Option A (Office-Add-In JavaScript) als Hauptweg, weil:

  • Gleiche Architektur wie Thunderbird-Add-On (beide sind WebExtension-artig) → viel Code-Wiederverwendung
  • Cross-Platform inkl. Mobile ist ein echtes Plus
  • Zukunftssicher (Microsoft's strategische Richtung)

Option C (Regel + Webhook) als Fallback fuer User, die kein Add-In installieren koennen (z.B. gesperrte Firmen-Outlooks). Kostet bei der Umsetzung fast nichts zusaetzlich, da die PBP-seitige Infrastruktur (HTTP-Endpunkt) eh schon steht.

Option B (VSTO) nicht weiter verfolgen — Aufwand/Nutzen passt nicht mehr in 2026.

Funktionalitaet des Add-Ins

Analog zum Thunderbird-Add-On:

  • Ribbon-Button bei geoeffneter Mail: "An PBP senden"
  • Dropdown mit drei Optionen:
    • Nur diese Mail
    • Gesamten Thread (inkl. eigene Antworten aus Sent)
    • Thread + Anhaenge
  • Taskpane (optional) zeigt den aktuellen PBP-Status der Mail an:
    • "Noch nicht in PBP"
    • "Zugeordnet zu Bewerbung XY"
    • Link zu Bewerbung in PBP-Dashboard
  • Settings-Dialog: PBP-Endpunkt-URL und Auth-Token konfigurieren (wie beim Thunderbird-Add-On)

Thread-Extraktion in Outlook

Outlook bietet zwei Wege zur Thread-Identifikation:

  1. Conversation-API (Office.context.mailbox.item.conversationId): Outlook gruppiert Mails anhand einer Conversation-ID. Diese ID bleibt auch ueber Reply-Ketten stabil. Bei "Gesamten Thread" kann das Add-In alle Mails mit gleicher Conversation-ID im aktuellen Ordner UND im Sent-Ordner einsammeln.

  2. Message-ID / In-Reply-To / References-Header: Wie bei Thunderbird, ueber E-Mail-Standard-Header. Etwas zuverlaessiger bei externen Mails, die vor der Conversation-Gruppierung aus verschiedenen Servern kommen.

Idealer Ansatz: beide kombinieren. Conversation-ID fuer schnelle Gruppierung, dann Header-Check zur Validierung.

Technische Basis Office-Add-In

  • Manifest: XML (klassisch) oder JSON (neues Format ab 2024)
  • Runtime: Office.js API in JavaScript/TypeScript
  • Hosting: Das Add-In selbst muss als Webapp gehostet sein (statisches HTML/JS auf einem Webserver). Das kann ein einfacher Static-Host sein (GitHub Pages, Cloudflare Pages, oder Teil des PBP-Frontends unter /outlook-addon/)
  • Auslieferung:
    • Einzel-User: Sideload ueber Manifest-Upload in Outlook
    • Unternehmens-Deployment: Exchange Admin Center / Microsoft 365 Admin Center
    • Oeffentlich: Microsoft AppSource (mit Review-Prozess)

Fuer PBP als Einzel-Tool: Sideload-Anleitung dokumentieren ist am schnellsten. AppSource-Listing nur wenn PBP breiter vermarktet werden soll.

Reihenfolge der Umsetzung

  1. Zuerst Feature: Thunderbird-Add-On "An PBP senden" mit Thread-Upload (+ Alternativen: Watch-Folder, IMAP, BCC) #478 umsetzen — der HTTP-Endpunkt und die DB-Erweiterungen sind gemeinsame Basis
  2. Thunderbird-Add-On (Feature: Thunderbird-Add-On "An PBP senden" mit Thread-Upload (+ Alternativen: Watch-Folder, IMAP, BCC) #478) bauen — prototypische Referenz-Implementierung
  3. Office-Add-In Grundgeruest aufsetzen (Manifest, Host, Ribbon-Button)
  4. Thread-Logik portieren (Erfahrungen aus Thunderbird nutzen)
  5. Sideload-Anleitung schreiben
  6. Optional spaeter: Outlook-Regel-Template als No-Code-Fallback (Option C)

Ressourcen / Dokumentation

Related

Prioritaet

Mittel-Hoch — parallel zu #478. Sollte aber zeitlich nach #478 kommen, weil dann die gemeinsame Infrastruktur steht und die Erfahrungen aus dem Thunderbird-Add-On direkt einfliessen koennen. Wenn Thunderbird erstmal funktioniert, ist der Outlook-Port kleiner.

Offene Fragen

  1. Welche Outlook-Versionen muessen unterstuetzt werden? Neues Outlook (2024+), klassisches Outlook, Outlook Web — alle? Oder reicht die haeufigste Kombination?
  2. Unternehmens-Kontext: Wenn User PBP aus einem Firmen-Outlook nutzen wollen, blockiert die IT oft Add-Ins. Dann ist Option C (Regel + Webhook) der einzige Weg.
  3. Office-Add-In-Hosting: Soll das Add-In als Teil des PBP-Frontends ausgeliefert werden oder separat?
  4. Manifest-Signierung: Fuer Sideload reicht ein unsigniertes Manifest. Fuer AppSource-Listing muss signiert werden (kostet Zeit und Microsoft-Developer-Account). Spaeter entscheiden.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestv1.8Geplant fuer v1.8

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions