Rendern Sie HTML-E-Mails als PNG

956
Lassi

Ich habe eine E-Mail-Nachricht in meinem IMAP-Posteingang. In HTML-E-Mail werden Schriftarten, Tabellen, Bilder usw. verwendet. Wie kann ich diese E-Mail-Nachricht in ein PNG-Bild konvertieren, das dem in meinem E-Mail-Programm angezeigten Bild nahe kommt?

Ich kann fast erreichen, was ich möchte, indem ich in meinem E-Mail-Programm als PDF-Datei drucke und diese dann pdftoppm -pngin PNG konvertiere. Das PDF hat jedoch Seitenränder, die die ursprüngliche E-Mail nicht hat. Außerdem pdftoppmwird ein PNG pro Seite erstellt, während ich die gesamte E-Mail in einem PNG ohne Seitenumbrüche haben möchte.

Ein Screenshot ist nicht möglich, da die E-Mail sehr lang ist.

Gibt es eine Methode, bei der es sich bei HTML-E-Mail im Wesentlichen um HTML handelt, um das rohe HTML aus der Nachricht herauszuholen und an eine Art WebKit-basiertes Rendering-Tool weiterzuleiten?

0

2 Antworten auf die Frage

2
Lassi

Am Ende dies getan:

  1. Speichern Sie die Nachricht in message.eml.
  2. Wandeln .emlauf .htmldiese Python 3 Skript:
 E-Mail importieren sys importieren  msg = email.message_from_file (sys.stdin) zum Teil in msg.walk (): Wenn part.get_content_type () == "text / html": sys.stdout.buffer.write (part.get_payload (decode = True)) 
  1. Führen Sie das Skript aus: python3 eml-to-html.py < message.eml > message.html

  2. Öffnen Sie das Ergebnis message.htmlin Firefox.

  3. Wählen Sie im Firefox-Menü Tools> Web Developer> Developer Toolbar, um eine Befehlszeile am unteren Rand des Browserfensters anzuzeigen. Geben Sie screenshot --fullpage message.pngdort und drücken Sie die Eingabetaste (per Journeyman Geek Vorschlag).

Oh. Ist E-Mail ein Standard-Python-Modul, das Sie finden würden, oder benötigen Sie ein zusätzliches Paket? Journeyman Geek vor 7 Jahren 0
Es ist Standard: https://docs.python.org/3/library/email-examples.html Ziemlich groß und schwer zu verstehen, aber es gibt viele Beispiele für Stack Overflow und anderswo :) Ich habe versucht, ein Ready-Made zu finden Befehlszeilenprogramm zum Konvertieren von .eml in .html, konnte jedoch nicht. Lassi vor 7 Jahren 0
1
Journeyman Geek

Wenn es eine einmalige Sache ist - Firefox tut das großartig. Shift f2Öffnet eine Konsole und der Befehl screenshot --fullpage filenamezeigt Ihren Bildschirm genau so an, wie Sie ihn sehen. Könnte etwas Arbeit brauchen, wenn es in einem Rahmen ist.

Nicht sicher, ob es trivial automatisierbar ist, aber es funktioniert ansonsten ganz gut.

Auf meinem System funktioniert shift-f2 nicht, aber Strg-Umschalt-K öffnet die Konsole. Wenn Sie jedoch den Befehl eingeben, wird eine Fehlermeldung angezeigt: SyntaxError: missing; vor der Aussage. Wenn Sie ein Semikolon voranstellen, wird die Nachricht trotzdem erzeugt. fixer1234 vor 7 Jahren 0
Das ist seltsam. Die Konsole ist sehr standardmässig eingebaut Journeyman Geek vor 7 Jahren 0
OK, es ist nicht die Konsole, es ist die Entwickler-Symbolleiste (obwohl sie möglicherweise mit den richtigen Einstellungen von der Konsole aus funktioniert; eine vollständige Seite ist in cmdline nicht verfügbar). Das Menü in meinem besagt, dass shift-f2 funktionieren sollte. Es kann also zu Add-On-Konflikten kommen, die jedoch über das Menü aufgerufen werden können: Extras | Webentwickler | Entwickler-Symbolleiste. Sie müssen auf das Symbol für das Einstellungszahnrad zugreifen und Fullpage Screenshot auswählen. Sie können das integrierte Kamerasymbol verwenden, um den Screenshot aufzunehmen. Info: https://developer.mozilla.org/en-US/docs/Tools/GCLI und https://developer.mozilla.org/en-US/docs/Tools/Taking_screenshots fixer1234 vor 7 Jahren 1