E-Mail-Antwort in Outlook löscht alles nach einer nummerierten Liste

Selbst gehostet, Version 2026.1.5 (Commit 2727e4d). Wir betreiben eine Community im Mailinglisten-Modus und nehmen Antworten per E-Mail entgegen.

Ein Mitglied antwortete von Outlook aus mit einem ziemlich langen Beitrag, und die Kopie, die auf der Website angezeigt wurde – und an die Liste zurückgesendet wurde –, wurde mitten im Text abgeschnitten. Alles ab der ersten nummerierten Liste war einfach verschwunden. Kein Fehler, nichts in den Logs, der Beitrag endete einfach mitten im Satz.

Was mich zunächst verwirrte: Die Aufzählungszeichen (Bullet Points) weiter oben in derselben E-Mail kamen einwandfrei an. Nur die nummerierte Liste wurde gestutzt, sowie alles, was danach folgte.

Das Problem liegt in extract_from_word in lib/email/receiver.rb. Für Outlook/Word-Mails behandelt es das erste Kind-Element von .WordSection1, das kein <p> oder <ul> ist, als den Beginn einer Signatur oder einer weitergeleiteten Nachricht und entfernt es zusammen mit allen folgenden Geschwisterelementen:

elided =
doc.css(
“.WordSection1 > :not(p):not(ul):first-of-type, .WordSection1 > :not(p):not(ul):first-of-type ~ *”,
).remove

Outlook rendert nummerierte Listen als <ol>, und der Selektor schließt <ol> nicht aus. Daher ist die nummerierte Liste das erste Element, das weder <p> noch <ul> ist, und der Empfänger kürzt die Nachricht genau an dieser Stelle. Aufzählungslisten (<ul>) sind ausgeschlossen, weshalb diese erhalten bleiben, die nummerierte Liste jedoch nicht.

Reproduktion

  1. Antworte von Outlook (Desktop) aus auf eine Benachrichtigung. Schreibe einen Absatz, dann eine nummerierte Liste und dann einen weiteren Absatz.
  2. Der erstellte Beitrag behält den Text bis zur nummerierten Liste bei und entfernt die Liste sowie alles darunter.

Minimaler HTML-Body, der das Problem auslöst (einfach in einen Receiver-Spec einfügen):

Einführungsabsatz.

Schritte:

  1. Erster
  2. Zweiter

Auch dieser abschließende Absatz verschwindet.

Du erhältst nur die beiden Einführungsabsätze zurück.

Das Problem besteht weiterhin auf main – der Selektor hat sich nicht geändert. Ich habe zunächst die Kategorie „Bug“ durchsucht und diesen Eintrag nicht bereits gemeldet gefunden.

Vorgeschlagene Lösung

Behandle <ol> wie <ul>, da eine nummerierte Liste Inhalt und keine Signatur ist:

“.WordSection1 > :not(p):not(ul):not(ol):first-of-type, .WordSection1 > :not(p):not(ul):not(ol):first-of-type ~ *”

Damit bleibt die Liste erhalten, und echte Signatur-/Weiterleitungs-Marker (Tabellen, Divs, horizontale Linien, Bilder) werden weiterhin entfernt. Ich kann gerne einen PR mit einer Beispiel-E-Mail und einem fehlschlagenden Spec öffnen, falls das hilfreich ist.

1 „Gefällt mir“

Hmm, könnten Sie zunächst versuchen, Ihre Website zu aktualisieren? Da Ihre Version nicht die neueste ist, könnte das Problem möglicherweise bereits behoben worden sein.

Hmm. Der Discourse-Status in meinem Admin-Bereich besagt, dass ich auf dem neuesten Stand bin und die aktuellste Version ausführe. Wirklich seltsam.

Also sehe ich, dass ich die neueste Version der ESR (Extended Stable Release) ausführe. Ich habe vorübergehend eine Problemumgehung. Ich habe viele Plugins geschrieben, und mit dieser Umgehung werde ich kein Risiko eingehen, meinen produktiven Server mit hohem Verkehrsaufkommen zu testen. Ich muss einfach warten, bis ich später ein Upgrade durchführe, und sehen, ob es behoben wurde.

Hoppla, vielleicht habe ich die Liste der Veröffentlichungen falsch gelesen. Ja, ich glaube, deine Version wird noch unterstützt.

Haben Sie ein Beispiel für eine solche E-Mail, das wir zur Reproduktion (und damit zur Fehlerbehebung) verwenden könnten? Sie können mir gerne eine .eml-Datei per PN senden (mit PII-Daten, die entfernt wurden).

Als neuer Benutzer kann ich keine Datei hochladen. Und ich habe überall gesucht, aber ich kann nirgendwo sehen, wo ich dir eine DM schicken kann, also ist das vielleicht auch deaktiviert. Entschuldige, dass ich das so kompliziert mache.

Ich habe dein Vertrauenslevel erhöht, sodass du jetzt auf mein Avatar klicken und einen Nachricht-Button sehen solltest :wink:

Erledigt. Vielen Dank. Geschätzt.