Convert MIME/HTML/Outlook Emails zu Raw Text?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Convert MIME/HTML/Outlook Emails zu Raw Text?

Beitrag von mistersixt » 11.03.2010 08:04:59

Moin moin,

ich habe schon seit langer Zeit ein selbstgeschriebens Shell-basiertes Trouble-Ticket System laufen. Seitdem immer mehr Kunden mit Outlook, einer Groupware etc. ihr EMails versenden, kommen halt nicht immer nur reine Text-EMails in meinem Ticket-System an, sondern in einem seltsamen HTML, Outlook, MIME- Wasauchimmerdasist-Format an. Die Rohdaten sehen dann beispielsweise so aus (hier einfach eine Test-EMail, gesendet von einem Webmailer) :

Code: Alles auswählen

----------MB_8CC8EFD4F050AC7_12E0_15EFD_web-mmc-d06.sysops.aol.com
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="utf-8"


=20
Leider geht BlaBla nicht mehr, k=C3=B6nnte bitte mal Jemand schau=
en? Danke.

Gr=C3=BCsse, der Kunde ABC.


=20



----------MB_8CC8EFD4F050AC7_12E0_15EFD_web-mmc-d06.sysops.aol.com
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="utf-8"

<font color=3D'black' size=3D'2' face=3D'arial'>
<div> <br>
<font size=3D"2"><font face=3D"Arial, Helvetica, sans-serif">Leider geht=
 BlaBla nicht mehr, k=C3=B6nnte bitte mal Jemand schauen? Danke.<=
br>
<br>
Gr=C3=BCsse, der Kunde ABC.<br>
<br>
</font></font></div>

<div> <br>
</div>

<div style=3D"clear: both;"></div>
</font>

----------MB_8CC8EFD4F050AC7_12E0_15EFD_web-mmc-d06.sysops.aol.com--
Frage: wie bekomme ich so einen Rotz wieder ein einen reinen Text konvertiert? Ich möchte gerne haben:

Code: Alles auswählen

Leider geht BlaBla nicht mehr, könnte bitte mal Jemand schauen? Danke.

Grüsse, der Kunde ABC.
Jemand eine Idee?

Danke und Gruss, mistersixt.
--
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Re: Convert MIME/HTML/Outlook Emails zu Raw Text?

Beitrag von nepos » 11.03.2010 08:47:26

Mit Perl könntest du mit den MIME-Modulen die Mails zerlegen, und die text/plain schon mal sauber rausholen. Denke, dabei wird auch das quoted-printable wieder dekodiert.
Wenn nur text/html drin ist, sollte sich mit einem HTML-Parser auch was basteln lassen, das nur den reinen Text übrig lässt.

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Re: Convert MIME/HTML/Outlook Emails zu Raw Text?

Beitrag von mistersixt » 11.03.2010 11:25:52

Oh Mann, ich habe jetzt so viele Perl-Scripte ausprobiert, mit recode, sed und awk herumgespielt ... ich bekomms nicht hin, Schitterich ;) !

Gruss, mistersixt.
--
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE

Benutzeravatar
bmario
Beiträge: 1257
Registriert: 05.09.2007 12:15:47
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dresden

Re: Convert MIME/HTML/Outlook Emails zu Raw Text?

Beitrag von bmario » 11.03.2010 16:03:12

Hi,

hier hast du ein fast-hacked-up php-script.

Code: Alles auswählen

#!/usr/bin/php
<?php


if(isset($argv[1])) $input = $argv[1];
else $input = <<<INPUT
----------MB_8CC8EFD4F050AC7_12E0_15EFD_web-mmc-d06.sysops.aol.com
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="utf-8"


=20
Leider geht BlaBla nicht mehr, k=C3=B6nnte bitte mal Jemand schau=
en? Danke.

Gr=C3=BCsse, der Kunde ABC.


=20



----------MB_8CC8EFD4F050AC7_12E0_15EFD_web-mmc-d06.sysops.aol.com
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="utf-8"

<font color=3D'black' size=3D'2' face=3D'arial'>
<div> <br>
<font size=3D"2"><font face=3D"Arial, Helvetica, sans-serif">Leider geht=
BlaBla nicht mehr, k=C3=B6nnte bitte mal Jemand schauen? Danke.<=
br>
<br>
Gr=C3=BCsse, der Kunde ABC.<br>
<br>
</font></font></div>

<div> <br>
</div>

<div style=3D"clear: both;"></div>
</font>

----------MB_8CC8EFD4F050AC7_12E0_15EFD_web-mmc-d06.sysops.aol.com--
INPUT;
 

if(preg_match_all("|----------.*\nContent-Transfer-Encoding: quoted-printable\nContent-Type: text/plain; charset=\"utf-8\"\n(.*)----------|Uims", $input,$res, PREG_SET_ORDER))
    $text = quoted_printable_decode($res[0][1]);
else $text = $input;

echo $text;

?>
Aufruf mit

Code: Alles auswählen

php decode.php "Der Emailtext"
bzw.

Code: Alles auswählen

./decode.php "Der Emailtext"
Sowas ähnliches müsste auch mit perl gehen, aber davon hab ich keine Ahnung ;)

mario

ps: Das HTML ist ja grausam!
Nichts zu tun ist viel besser,
als mit viel Mühe nichts zu schaffen. - Laotse

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Re: Convert MIME/HTML/Outlook Emails zu Raw Text?

Beitrag von mistersixt » 11.03.2010 16:11:16

Wow, super, merci beaucoup :) !

Gruss, mistersixt.
--
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE

Antworten