# MBox oder Maildir reinsaugen und enthaltene http-urls ausspucken.
# - behandelt multipart-Message (ueberspringt kaputte Teile)
# - dekodiert quoted-printable/base64 
# - behandelt (rudimentaer) als text/plain deklarierte
#   Dummbatz-M$-HTML-Mails

import email
import mailbox
import re
from urlparse import urlparse, urlunparse
from sys import argv

# Pattern (die Zeichen < > " sind noetig, um als text/plain
# deklarierte Dummbatz-M$-HTML-Mails zu verdauen)
regex = re.compile('http://[^\s<>"]+')

# mbox oder maildir (ein- bzw. auskommentieren)
mbox = mailbox.UnixMailbox(file(argv[1]), email.message_from_file)
#mbox = mailbox.Maildir(file(argv[1]), email.message_from_file)
for msg in mbox:                        # fuer jede Message
    for part in msg.walk():             # fuer jeden multipart - Teil
        if part.get_content_maintype() == 'text': # wenn text
            # Pattern finden, quoted-printable, base64 dekodieren
            try:
                matches = re.findall(regex, part.get_payload(decode = True))
            except TypeError:
                pass                    # kaputte parts ueberspringen
            for match in matches:       # fuer jeden Match
                ups = urlparse(match)   # URL zerlegen
                #print ups               # Zum Ansehen der URL-Teile
                # Gewuensche URL-Teile raushauen
                print urlunparse((ups[0], ups[1], ups[2], '', '', ''))
