Stand heute unterstützt paperless-ngx leider keine Email-Benachrichtigungen wenn eine Freigabe an einen anderen Benutzer erfolgt. Mit ein paar Tricks lässt sich diese Funktionalität jedoch, zumindest in einer grundlegend, nachrüsten.
Ich möchte hier kurz erläutern wie ich Email-Benachrichtigungen bei Freigabe in paperless-ngx ohne externe Tools realisiert habe:
Wir brauchen:
- ein SMTP-Relay oder Mailserver
- Zugriff auf die paperless-ngx-Einstellungen (Umgebungsvariablen, das SMTP-Relay lässt sich aktuell nicht über die grafische Oberfläche einrichten!)
- ein Schlagwort (Tag) mit dem beispielhaften Namen „Max hinzufügen“
- ein Schlagwort mit dem beispielhaften Namen „Geteilt mit Max“
- bei beiden Schlagwörtern muss die automatische Zuweisung deaktiviert werden (!)
SMTP-Relay einrichten
Damit wir in den Arbeitsabläufen (Workflows) die Option zum Mailversand nutzen können, müssen wir für paperless-ngx erst ein Mailrelay einrichten. In meinem Fall nutze ich paperless-ngx mit Docker und kann die Einstellungen schlicht mittels Umgebungsvariablen des paperless-ngx-Containers in meinem docker-compose.yml einrichten:
services:
webserver:
image: ghcr.io/paperless-ngx/paperless-ngx:latest
restart: unless-stopped
depends_on:
- broker
- gotenberg
- tika
ports:
- "127.0.0.1:8000:8000"
volumes:
- data:/usr/src/paperless/data
- media:/usr/src/paperless/media
- ./export:/usr/src/paperless/export
- ./consume:/usr/src/paperless/consume
env_file: docker-compose.env
environment:
PAPERLESS_EMAIL_HOST: [smtp server]
PAPERLESS_EMAIL_PORT: 465
PAPERLESS_EMAIL_HOST_USER: [smtp benutzer]
PAPERLESS_EMAIL_FROM: [smtp benutzer]
PAPERLESS_EMAIL_HOST_PASSWORD: "[smtp passwort]"
PAPERLESS_EMAIL_USE_SSL: true
[ ... ]
Nach einem „docker compose up -d“ nach der Änderung erscheint die „Email“ Aktion wie folgt:

Arbeitsablauf definieren
Für das Verständnis muss klar sein, dass die Berechtigungszuweisung wie auch die Benachrichtigung mittels Tags erfolgt. Dafür haben wir zwei Tags:
„Max hinzufügen“ gibt an, dass wir Benachrichtigung und Freigabe erteilen wollen.
Wenn wir das Tag hinzufügen, läuft paperless-ngx los und:
- fügt den Benutzer Max dem Dokument hinzu
- fügt das Schlagwort „Geteilt mit Max“ dem Dokument hinzu
- versendet die Email
- entfernt das Schlagwort „Max hinzufügen“
„Geteilt mit Max“ gibt an, dass dieses Dokument bereits hinzugefügt wurde und die Benachrichtigung verschickt wurde.
Somit kann es nicht versehentlich zur mehrfachen Email-Benachrichtigung kommen bzw. nur dann, wenn das „Max hinzufügen“ Schlagwort zeitlich verteilt dem Dokument erneut hinzugefügt wird.
Auslöser: Dokument aktualisieren
Hat eines der Tags: „Max hinzufügen“

Aktion 1: Email
Entsprechend alle Felder füllen, ggf. Variablen einsetzen für Variable URLs oder Dateinamen. Komplette Liste an nutzbaren Variablen ist hier zu finden.

Aktion 2: Entfernung
Tags entfernen: „Max hinzufügen“

Aktion 3: Zuordnung
Tags zuweisen: Geteilt mit Max
Bearbeitungsberechtigungen zuweisen: max

Funktion benutzen
Um nun ein Dokument an den Benutzer „max“ freizugeben, wird das Tag „Max hinzufügen“ zugewiesen und das Dokument gespeichert. paperless-ngx wird nun die Berechtigungen anpassen, die Email verschicken und anschließend das Schlagwort ersetzen. Der Prozess dauert je nach Menge der anderen anstehenden Aufgaben einen Moment.
Problematisch ist diese Methode dann, wenn Massen-Änderungen an Dokumenten vorgenommen werden. Jede Änderung bei zB 1000 Dokumenten oder mehr löst für diese 1000 Dokumente eine neuerliche Prüfung der Tags aus, da bei jedem Dokument geprüft werden muss, ob Aktionen für das Dokument nach der Änderung ausgeführt werden müssen.
Ohne externe Tools, die mittels Webhooks ausgelöst werden könnten, wie zum Beispiel n8n, ist das jedoch die einfachste Methode um Email-Benachrichtigungen zu realisieren. Auch post-consumption-Skripte wären möglich, aber nicht für meinen Anwendungsfall der nachträglichen Freigabe in einem Zeitraum nach dem initialen Upload.
Jegliche anderen Ideen die ich zur Realisierung hatte wären weitaus komplexer, da ja letztlich der Sendestatus zum Dokument irgendwo gespeichert werden muss um keine mehrfachen Benachrichtigungen zu verschicken.
Diskutiert wurde die Problem aktiv bereits hier.