Codierung eines Gmail-Stils "zitierten Text ausblenden" für webbasiertes Mailinglisten-Archiv

8

Ich arbeite an einer Webanwendung, die E-Mail-Nachrichten in einem Thread-Format analysiert und anzeigt (unter anderem). E-Mails können von einer beliebigen Anzahl verschiedener E-Mail-Clients kommen und entweder im Text- oder im HTML-Format vorliegen.

Da die meisten Leute dazu neigen, einen Top-Beitrag zu schreiben, möchte ich die duplizierte Nachricht in einer E-Mail-Antwort auf ähnliche Weise wie Google Mail ausblenden können (z. B. "zitierten Text anzeigen").

Es ist etwas schwierig, zu bestimmen, welcher Teil der Nachricht die Antwort ist. Persönlich verwende ich "& gt;" Trennzeichen am Anfang des zitierten Textes, wenn ich antworte. Ich habe einen Regexp erstellt, der nach diesen Zeilen sucht und ein div um sie legt, damit einige JS diesen Textblock ausblenden oder anzeigen können.

Ich habe dann bemerkt, dass Outlook standardmäßig nicht die Zeichen "& gt;" verwendet, sondern fügt einfach einen Header-Block über der Antwort mit der Zusammenfassung der Header (From, Subject, Date, etc.) hinzu. Die Antwort ist unberührt. Ich kann mich darauf einstellen und den Rest der E-Mail verstecken, wobei ich davon ausgehe, dass es sich um ein Top-Zitat handelt.

Ich habe dann Thunderbird angeschaut, und es verwendet "& gt;" für Text und <blockquote & gt; für HTML-Mails. Ich habe immer noch nicht untersucht, was Apple Mail macht, was Notes tut oder was andere der Mail-Clients dort tun.

Werde ich für jeden einzelnen Kunden einen speziellen Fall regexp schreiben? oder fehlt mir etwas?

Alle Vorschläge, Beispielcode oder Hinweise auf Bibliotheken von Drittanbietern sehr geschätzt!

    
Darren 11.02.2009, 06:31
quelle

4 Antworten

6

Es wird ziemlich schwierig sein, die Art und Weise, wie Gmail es tut, zu duplizieren, da es nicht darauf ankommt, ob es ein zitiertes Stück ist oder nicht, wie Zac sagt, es scheint sich nur um das diff zu kümmern.

Es ist eigentlich ziemlich schwer, das zu 100% richtig zu machen. Nur-Text-E-Mail ist "verlustbehaftet", es ist völlig möglich für Sie,

zu senden %Vor%

Das kann als etwas wie

codiert werden %Vor%

Und dann wird als

dekodiert %Vor%

Es ist nicht von einer Inline-Antwort zu unterscheiden.

Das ist E-Mail, also gibt es viele Variationen. E-Mails werden normalerweise mit etwa 74 Zeichen umbrochen, und die Codierungsschemata können sich unterscheiden. Es ist eine echte PITA. Wenn Sie auf die HTML-Version zugreifen können, werden Sie wahrscheinlich besser nach Zitat-Tags und Ähnlichem suchen können. Eine andere Idee wäre, sowohl den reinen Text als auch die HTML-Version zu analysieren, um zu versuchen, die Grenzen zu bestimmen.

Außerdem ist es am besten, nur bestimmte Client-Hacks zu planen. Sie alle konstruieren Mime-Nachrichten unterschiedlich, sowohl in der Struktur als auch im Header-Inhalt.

Edit: Ich sage das mit der Erfahrung, ein E-Mail-Verarbeitungssystem zu schreiben und zu sehen, wie mehrere Leute versuchen, das, was Sie tun, zu tun. Es hat immer nur "ok" Ergebnisse.

    
Richard Levasseur 11.02.2009 08:10
quelle
1

Soweit ich feststellen kann, kümmert sich Google Mail nicht um vorangestellte Zeilen oder Abschnittsüberschriften, außer um sie zu ignorieren. Wenn die Textzeilen früher im Thread angezeigt wurden und dann erneut angezeigt werden, wird davon ausgegangen, dass sie zitiert wurden. Wenn Sie beispielsweise mehrere Nachrichten senden und Ihre Signatur nicht ändern, wird die Signatur als in Anführungszeichen gesetzt angesehen. Wenn Sie bereits mit dem '& gt;' Präfix, ein einfacher Unterschied sollte den Rest machen. Keine Notwendigkeit, Lust zu haben.

    
Zac Thompson 11.02.2009 06:39
quelle
0

Das erste, was ich tun möchte, ist, den ganzen Leerraum auszublenden, oder den Leerraum zwischen jedem Wort auf 1 zu reduzieren, und Sonderzeichen aus beiden Blöcken, dann suchen Sie nach dem alten in dem neuen.

>     
RKitson 11.02.2009 06:38
quelle
0
___ qstntxt ___

Ich arbeite an einer Webanwendung, die E-Mail-Nachrichten in einem Thread-Format analysiert und anzeigt (unter anderem). E-Mails können von einer beliebigen Anzahl verschiedener E-Mail-Clients kommen und entweder im Text- oder im HTML-Format vorliegen.

Da die meisten Leute dazu neigen, einen Top-Beitrag zu schreiben, möchte ich die duplizierte Nachricht in einer E-Mail-Antwort auf ähnliche Weise wie Google Mail ausblenden können (z. B. "zitierten Text anzeigen").

Es ist etwas schwierig, zu bestimmen, welcher Teil der Nachricht die Antwort ist. Persönlich verwende ich "& gt;" Trennzeichen am Anfang des zitierten Textes, wenn ich antworte. Ich habe einen Regexp erstellt, der nach diesen Zeilen sucht und ein div um sie legt, damit einige JS diesen Textblock ausblenden oder anzeigen können.

Ich habe dann bemerkt, dass Outlook standardmäßig nicht die Zeichen "& gt;" verwendet, sondern fügt einfach einen Header-Block über der Antwort mit der Zusammenfassung der Header (From, Subject, Date, etc.) hinzu. Die Antwort ist unberührt. Ich kann mich darauf einstellen und den Rest der E-Mail verstecken, wobei ich davon ausgehe, dass es sich um ein Top-Zitat handelt.

Ich habe dann Thunderbird angeschaut, und es verwendet "& gt;" für Text und %code% & gt; für HTML-Mails. Ich habe immer noch nicht untersucht, was Apple Mail macht, was Notes tut oder was andere der Mail-Clients dort tun.

Werde ich für jeden einzelnen Kunden einen speziellen Fall regexp schreiben? oder fehlt mir etwas?

Alle Vorschläge, Beispielcode oder Hinweise auf Bibliotheken von Drittanbietern sehr geschätzt!

    
___ answer535681 ___

Soweit ich feststellen kann, kümmert sich Google Mail nicht um vorangestellte Zeilen oder Abschnittsüberschriften, außer um sie zu ignorieren. Wenn die Textzeilen früher im Thread angezeigt wurden und dann erneut angezeigt werden, wird davon ausgegangen, dass sie zitiert wurden. Wenn Sie beispielsweise mehrere Nachrichten senden und Ihre Signatur nicht ändern, wird die Signatur als in Anführungszeichen gesetzt angesehen. Wenn Sie bereits mit dem '& gt;' Präfix, ein einfacher Unterschied sollte den Rest machen. Keine Notwendigkeit, Lust zu haben.

    
___ answer535850 ___

Es wird ziemlich schwierig sein, die Art und Weise, wie Gmail es tut, zu duplizieren, da es nicht darauf ankommt, ob es ein zitiertes Stück ist oder nicht, wie Zac sagt, es scheint sich nur um das diff zu kümmern.

Es ist eigentlich ziemlich schwer, das zu 100% richtig zu machen. Nur-Text-E-Mail ist "verlustbehaftet", es ist völlig möglich für Sie,

zu senden %Vor%

Das kann als etwas wie

codiert werden %Vor%

Und dann wird als

dekodiert %Vor%

Es ist nicht von einer Inline-Antwort zu unterscheiden.

Das ist E-Mail, also gibt es viele Variationen. E-Mails werden normalerweise mit etwa 74 Zeichen umbrochen, und die Codierungsschemata können sich unterscheiden. Es ist eine echte PITA. Wenn Sie auf die HTML-Version zugreifen können, werden Sie wahrscheinlich besser nach Zitat-Tags und Ähnlichem suchen können. Eine andere Idee wäre, sowohl den reinen Text als auch die HTML-Version zu analysieren, um zu versuchen, die Grenzen zu bestimmen.

Außerdem ist es am besten, nur bestimmte Client-Hacks zu planen. Sie alle konstruieren Mime-Nachrichten unterschiedlich, sowohl in der Struktur als auch im Header-Inhalt.

Edit: Ich sage das mit der Erfahrung, ein E-Mail-Verarbeitungssystem zu schreiben und zu sehen, wie mehrere Leute versuchen, das, was Sie tun, zu tun. Es hat immer nur "ok" Ergebnisse.

    
___ qstnhdr ___ Codierung eines Gmail-Stils "zitierten Text ausblenden" für webbasiertes Mailinglisten-Archiv ___ answer535680 ___

Das erste, was ich tun möchte, ist, den ganzen Leerraum auszublenden, oder den Leerraum zwischen jedem Wort auf 1 zu reduzieren, und Sonderzeichen aus beiden Blöcken, dann suchen Sie nach dem alten in dem neuen.

>     
___ tag123email ___ E-Mail ist eine Methode zum Austauschen digitaler Nachrichten von einem Absender an einen oder mehrere Empfänger. Wenn Sie nachfragen, warum die von Ihnen gesendeten E-Mails als Spam markiert sind, ist das Thema für StackOverflow nicht relevant. ___ antwort4338558 ___

Hier ist ein mozdev-Projekt, das für andere hilfreich sein kann, die auf dieser Seite nach einer Thunderbird-Lösung suchen:

Ссылка

    
___ tag123regex ___ Reguläre Ausdrücke stellen eine deklarative Sprache zur Verfügung, um Muster in Strings zu vergleichen. Sie werden häufig für die Überprüfung, Analyse und Umwandlung von Zeichenfolgen verwendet. Da reguläre Ausdrücke nicht vollständig standardisiert sind, sollten alle Fragen mit diesem Tag auch ein Tag enthalten, das die anwendbare Programmiersprache oder das entsprechende Werkzeug angibt. HINWEIS: Nach HTML-, JSON-, usw.-Regexen zu fragen, neigt zu negativen Reaktionen. Wenn es einen Parser dafür gibt, verwende stattdessen diesen. ___ tag123parsing ___ Parsen bezieht sich auf das Aufbrechen eines Artefakts in seine Bestandteile und auf das Erfassen der Beziehung zwischen diesen Elementen. Dieses Tag ist nicht für Fragen zum gehosteten Dienst Parse.com ([parse.com] verwenden) oder analysiert Fehler in einer bestimmten Programmiersprache (verwenden Sie stattdessen das entsprechende Sprachen-Tag). ___
Brad 02.12.2010 18:37
quelle

Tags und Links