Die Überschrift sagt eigentlich schon alles. Das Code Snippet dient dazu von einem IMAP Server Mails zu laden und mit dem Payload Dinge anzustellen.
#!/usr/bin/env python import imaplib import sys import email import re import email.header import base64 from HTMLParser import HTMLParser username = "blah@blah.de" password = "xxxxxx" imap_rz1 = "imap.xxx.de" imap_rz2 = "imap-rz2.xxxxx.de" class MLStripper(HTMLParser): def __init__(self): self.reset() self.fed = [] def handle_data(self, d): self.fed.append(d) def get_data(self): return ''.join(self.fed) def strip_tags(html): s = MLStripper() s.feed(html) return s.get_data() # Try primary server try: M = imaplib.IMAP4(imap_rz1) except: sys.stderr.write("Try second server, primary not reachable.\n") # Try secondary server try: M = imaplib.IMAP4(imap_rz2) except: sys.stderr.write("Error no connection possible.\n") sys.exit(1) # Try to Login try: M.login(username, password) except: sys.stderr.write("Error login.\n") sys.exit(1) # DATA M.select() typ, data = M.search(None, 'ALL') for num in data[0].split(): typ, data = M.fetch(num, '(RFC822)') #### print 'Message %s\n%s\n' % (num, data[0][1]) msg = email.message_from_string(data[0][1]) hdr = email.header.make_header(email.header.decode_header(msg['Subject'])) if msg.is_multipart(): print "Multipart Mail" for payload in msg.get_payload(): print payload.get_payload() else: enc = msg['Content-Transfer-Encoding'] if enc == "base64": dirty = msg.get_payload() payload = base64.decodestring(dirty) print payload #print strip_tags(payload) pmail = parse_mail(mailcontent=strip_tags(payload).rstrip().lstrip().splitlines()) else: print msg.get_payload() #print strip_tags(msg.get_payload()) pmail = parse_mail(mailcontent=strip_tags(msg.get_payload()).rstrip().lstrip().splitlines()) # Set to deleted M.store(num, '+FLAGS', '\\Deleted') # Delete permanently M.expunge() # Close current mailbox M.close() # Logout M.logout()