Mailbox-Plugin: HTML-Mails anzeigen (mailbox-0.5.2-pre2 inside ;-)

  • Hallo zusammen,


    auch wenn ich die Funktionalität eigentlich selbst nicht dringend benötige und daher nicht allzuviel Zeit in dieses Thema investieren wollte, habe ich mich nun auf mehrfachen Wunsch hin doch entschlossen, im Mailbox-Plugin eine Möglichkeit zu schaffen, HTML-only Mails halbwegs lesbar darzustellen.


    Natürlich kann die Darstellung von HTML-Mails nicht mit echten Mail-Clients unter einer grafischen Benutzeroberfläche mit halten, da nach wie vor das OSD des VDR im 'Textmodus' verwendet wird. Ausserdem spielt die Qualität der Konvertierung des HTML-Quelltextes in Plain-Text eine Rolle.


    Da ich weiterhin nicht die Absicht hatte, selbst einen HTML->Text-Konverter zu implementieren oder bestehenden Quelltext in das Plugin zu integrieren, kommen für diese Aufgabe externe Programme zum Einsatz.


    Das ganze funktioniert wie folgt:


    Das Plugin aktzeptiert einen neuen Parameter "-c <ConvertCmd>', dem ein externes Programm mitgegeben wird, welches zur Konvertierung verwendet wird.


    Wenn das Plugin mit -c <ConvertCmd> gestartet wurde, wird für alle Teile von E-Mails, welche HML-Text enthalten und die auch dargstellt werden sollen (s.u.), folgendes ausgeführt:


    • Das Plugin schreibt den HTML-Quelltext in eine temporäre Datei.


    • Das Plugin ruft das 'ConvertCmd' mit folgenden Parametern auf:
      -i <Name der HTML-Quelldatei>
      -s <charset im HTML-Quelltext>
      -o <Name der Text-Zieldatei>
      -d <gewünschter charset in der Text-Zieldatei>
      -w <Anzahl Zeichen / Zeile>


    • Kehrt der Aufruf des 'ConvertCmd' mit einem Fehlercode von 0 zurück, so liest das Mailbox-Plugin die Zieldatei (falls vorhanden) und stellt den enthaltenen Text anstelle des HTML-Quelltextes dar.


    • Das Plugin löscht die Quell- und Zieldatei.


    Als Name für die HTML-Quelldatei wird '/tmp/vdr-mail-<pid-des-VDR-Prozesses>.html' und als Name für die Text-Zieldatei wird '/tmp/vdr-mail-<pid-des-VDR-Prozesses>.txt' verwendet. VDR muss also die entsprechenden Rechte im Dateisystem haben.


    Die Angabe der charsets ist erforderlich, um den Text korrekt für das OSD des VDR zu erzeugen. (Hint: VDR-1.5.x erlaubt neben den bisher verwendeten iso-8859-* auch UTF-8 als Zeichensatz.)


    Mit dem Plugin möchte ich ein Shell-Script (mailconv.sh) liefern, welches zumindest ein paar mögliche Wege aufzeigt, wie die Konvertierung durchgeführt werden kann und welches direkt als Konvertierungskommando an das Plugin übergeben werden kann (also so: '-c /pfad/zum/befehl/mailcmd.sh')


    Beispielhaft habe ich mich mit "html2text", "w3m" und "lynx" versucht, wobei das zu verwendende Programm natürlich auch installiert sein muss!


    Folgendermassen sieht meine derzeitige Version von mailcmd.sh aus:


    Da ich kein grosser Shell-Programmierer bin und mit nicht allzuvielen HTML-Mails experimentiert habe, nehme ich Verbesserungsvorschläge für mailcmd.sh gerne entgegen.



    Noch ein Wort zu (HTML-)Mails überhaupt:
    (sehr vereinfacht dargestellt)


    [list=n]
    [*] Der einfachste Fall sind Mails, die lediglich aus einem Teil bestehen, der reinem Plain-Text enthält. Diese werden wie gehabt angezeigt.


    [*] Der Mail-Client des Absenders erzeugt die Mail so, dass sie aus mehreren Teilen (MULTIPART/ALTERNATIVE) besteht, wobei beide Teile den eigentlichen Text beinhalten. Ein Teil wird dabei vom Mail-Client des Absenders als Plain-Text formatiert und ein weiterer Teil enthält denselben Text im HTML- oder einem anderen Format.
    Die Teile haben also den gleichen Inhalt, jedoch in unterschiedlicher Formatierung. Das Programm zur Anzeige der Mail hat nun die Wahl, welchen Teil bzw. welche Formatierung es am Besten darstellen kann.


    Da das Mailbox-Plugin sowieso nur unformatierten Text darstellen kann, wird es denjenigen Teil der Mail darstellen, der Plain-Text enthält. Der HTML-Teil wird in diesem Fall also nicht angezeigt und damit auch keine Konvertierung durchgeführt.
    (Siehe RFC 2046, Abschnitt 5.1.4 oder schöner formatiert in einem älteren RFC)


    [*] Die Mail besteht aus einem Teil, der den Text im HTML-Format darstellt.
    Hier wird das Plugin den externen Konvertierer aufrufen und den konvertierten Text darstellen.
    [/list]
    Die Test-Version 0.5.2-pre1 des Mailbox-Plugins bekommt Ihr hier


    Sodele, und nun wünsche ich viel Spass beim Testen und - insbesondere von denjenigen, die sich diese Funktion gewünscht haben - Kommentare/Verbesserungsvorschläge zur mailcmd.sh (und der Funktion allgemein).


    EDIT: 28.10.2007
    Die Test-Version 0.5.2-pre2 des Plugins erlaubt es nun, mit der Taste 8 alle (darstellbaren) Teile einer Mail zu anzuzeigen, d.h. bei MULTIPART/ALTERNATIVE werden Plain- und HTML-Text-Teile angezeigt.


    bye, Alex

    2 Mal editiert, zuletzt von Alex ()

  • Hallo,


    das hört sich ja sehr vielversprechend an. :tup


    Eine Anmerkung hätte ich noch:
    Es gibt manchmal auch Emails, die zwar text und html bieten, wo sich aber im Textteil nur ein lapidarer Hinweis befindet doch ein "modernes" Email-programm zu benutzen oder der Textteil sehr abgespeckt ist. Dann wäre natürlich schön, trotzdem den HTML-Konverter anschmeissen zu können.


    Aber erstmal Danke für die klasse Arbeit.


    Tschüß Frank

  • Ergänzend muss ich noch sagen: Ich habe auch schon mime/multipart mails bekommen, deren text/plain Teil grauenhaft verunstaltet war -- scheint ziemlich buggy Software da draußen zu existieren :o Bei Mutt bin ich deshalb mittlerweile dazu übergegangen, den text/html Teil zu bevorzugen und durch meinen w3m-Filter zu jagen.


    Ansonsten: Gute Idee, das mit nem externen Script zu lösen, so hat man als User volle Felxibilität :) Ich werd das definitiv testen sobald mein Wohnzimmer-VDR mal fertig ist, hoffentlich bald :)

    Asrock A75 Pro4-M
    Debian wheezy (testing, stock) (aktuell 2012-08-24: Linux 3.2, VDR 1.7.28)
    vdr-sxfe (xineliboutput)
    Pioneer VSX-520-K

  • Zitat

    Original von FrankJepsen
    Hallo,


    das hört sich ja sehr vielversprechend an. :tup


    Eine Anmerkung hätte ich noch:
    Es gibt manchmal auch Emails, die zwar text und html bieten, wo sich aber im Textteil nur ein lapidarer Hinweis befindet doch ein "modernes" Email-programm zu benutzen oder der Textteil sehr abgespeckt ist. Dann wäre natürlich schön, trotzdem den HTML-Konverter anschmeissen zu können.


    Also gut: Ab Version 0.5.2-pre2 (siehe erstes Post im Thread) lassen sich alle darstellbaren Teile (also PLAIN / HTML) mit der Taste 8 für die derzeit angezeigte Mail einschalten.


    Eine andere Taste war nicht mehr frei, siehe den Screenshot der Online-Hilfe (Taste 0) der Tastenbelegung im MailView:



    HTH, Alex

    Bilder

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!