Ergänzt das humhub-Skill um mail-send. Die REST-API kann das Mail-Modul, das Skill bisher nicht — Direktnachrichten mussten von Hand in der Weboberfläche geschrieben werden.
Empfänger als Benutzername, Profil-URL oder ID, mehrere mit Komma.
Der Stolperstein ist die Empfängerauflösung: Profil-Slug und Benutzername sind nicht dasselbe — zu /u/serge/ gehört der Benutzername Serge, und get-by-username unterscheidet Groß-/Kleinschreibung. Wer den Slug aus der URL nimmt, bekommt User not found!. resolve_user() probiert deshalb erst get-by-username und fällt dann auf einen Durchlauf der Benutzerliste zurück, der Benutzername und Slug ohne Rücksicht auf Groß-/Kleinschreibung vergleicht.
Bewusst kein Befehl zum Lesen von Konversationen: fremde Nachrichten gehören nicht ungefragt in einen Modellkontext.
Getestet gegen die Instanz: Versand per Benutzername und per Profil-URL, beides legt die Konversation an.
Analyse und Umsetzung mit Claude Code, Inhalt von mir geprüft und freigegeben.
Ergänzt das humhub-Skill um `mail-send`. Die REST-API kann das Mail-Modul, das Skill bisher nicht — Direktnachrichten mussten von Hand in der Weboberfläche geschrieben werden.
```
./humhub.py mail-send <empfaenger> "<betreff>" [datei|-]
```
Empfänger als Benutzername, Profil-URL oder ID, mehrere mit Komma.
Der Stolperstein ist die Empfängerauflösung: Profil-Slug und Benutzername sind nicht dasselbe — zu `/u/serge/` gehört der Benutzername `Serge`, und `get-by-username` unterscheidet Groß-/Kleinschreibung. Wer den Slug aus der URL nimmt, bekommt `User not found!`. `resolve_user()` probiert deshalb erst `get-by-username` und fällt dann auf einen Durchlauf der Benutzerliste zurück, der Benutzername und Slug ohne Rücksicht auf Groß-/Kleinschreibung vergleicht.
Bewusst kein Befehl zum Lesen von Konversationen: fremde Nachrichten gehören nicht ungefragt in einen Modellkontext.
Getestet gegen die Instanz: Versand per Benutzername und per Profil-URL, beides legt die Konversation an.
*Analyse und Umsetzung mit Claude Code, Inhalt von mir geprüft und freigegeben.*
Die REST-API kann das Mail-Modul, das Skill bisher nicht — Direktnachrichten
mussten von Hand in der Weboberflaeche geschrieben werden.
Der Stolperstein ist die Empfaengeraufloesung: Profil-Slug und Benutzername
sind nicht dasselbe (zu /u/serge/ gehoert "Serge"), und get-by-username
unterscheidet Gross-/Kleinschreibung. resolve_user() nimmt deshalb ID,
Benutzername oder Profil-URL und faellt auf einen Durchlauf der Benutzerliste
zurueck, der beides case-insensitive vergleicht.
Kein Befehl zum Lesen von Konversationen: fremde Nachrichten gehoeren nicht
ungefragt in einen Modellkontext.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
mail-send legt immer eine neue Konversation an; fuer eine Antwort braucht es
POST /mail/<id>/entry. Die ID steht in der URL der Konversation.
Holt den Verlauf nicht ab, sondern prueft nur die Erreichbarkeit — fremde
Nachrichten gehoeren nicht ungefragt in einen Modellkontext.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
sko
merged commit 21d709afbd into main2026-09-16 06:32:10 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Ergänzt das humhub-Skill um
mail-send. Die REST-API kann das Mail-Modul, das Skill bisher nicht — Direktnachrichten mussten von Hand in der Weboberfläche geschrieben werden.Empfänger als Benutzername, Profil-URL oder ID, mehrere mit Komma.
Der Stolperstein ist die Empfängerauflösung: Profil-Slug und Benutzername sind nicht dasselbe — zu
/u/serge/gehört der BenutzernameSerge, undget-by-usernameunterscheidet Groß-/Kleinschreibung. Wer den Slug aus der URL nimmt, bekommtUser not found!.resolve_user()probiert deshalb erstget-by-usernameund fällt dann auf einen Durchlauf der Benutzerliste zurück, der Benutzername und Slug ohne Rücksicht auf Groß-/Kleinschreibung vergleicht.Bewusst kein Befehl zum Lesen von Konversationen: fremde Nachrichten gehören nicht ungefragt in einen Modellkontext.
Getestet gegen die Instanz: Versand per Benutzername und per Profil-URL, beides legt die Konversation an.
Analyse und Umsetzung mit Claude Code, Inhalt von mir geprüft und freigegeben.