ich möchte E-Mails mit Datenblättern im Plaintext-Format automatisiert auslesen und die Daten in einer MySQL-Datenbank speichern. Folgendes habe ich bereits:
Code: Alles auswählen
#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-
import logging
import email
import sys
import re
logging.basicConfig(format='%(asctime)s - %(levelname)s: %(message)s', level=logging.DEBUG)
fp = open(sys.argv[1])
msg = email.message_from_file(fp)
fp.close()
emilData = msg.get_payload(decode = True)
Nun stellt sich allerdings das Problem, dass die Mails von der äußeren Form zwar immer gleich sind, nur leider scheinbar zufällig verschiedene Zeichensätze benutzen. Bisher sind mir UTF-8 und ISO-8859-1 untergekommen, ich kann aber nicht definitiv ausschließen, dass möglicherweise noch weitere auftreten.
UTF-8 ist im body base64-kodiert, was aber mit decode = True (Codeblock oben, Zeile 15) selbstständig abgefangen wird. Als problematisch hat sich jedoch ISO-8859-1 herausgestellt, das kriege ich aus mir unerklärlichen Gründen nicht umcodiert.
Ich habe versucht:
Code: Alles auswählen
charset = msg.get_charset() # Funktioniert nicht, es wird 'None' zurückgegeben
charset = re.compile('charset="([\w\-]+)"').search(msg.get('Content-Type')).group(1) # läuft, bringt aber leider nichts
logging.debug("Charset: %s %s" %(charset, type(charset)))
emilData.decode(charset).encode('utf-8') # vermutlich dilettantisch, funktioniert aber auch nicht
Hat jemand eine Ahnung, wo mein Denkfehler liegt?Geschlecht M�nnlich
Gruß, Fin