2014-10-12 2 views
12

Sah sich um und konnte keine befriedigende Antwort finden. Kann jemand .msg-Dateien aus Outlook mit Python analysieren?Parsing Outlook .msg-Dateien mit Python

Ich habe versucht mit Mimetools und E-Mail.Parser ohne Glück. Hilfe würde sehr geschätzt werden!

Antwort

12

Dies funktioniert für mich:

import win32com.client 
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI") 
msg = outlook.OpenSharedItem(r"C:\test_msg.msg") 

print msg.SenderName 
print msg.SenderEmailAddress 
print msg.SentOn 
print msg.To 
print msg.CC 
print msg.BCC 
print msg.Subject 
print msg.Body 

count_attachments = msg.Attachments.Count 
if count_attachments > 0: 
    for item in range(count_attachments): 
     print msg.Attachments.Item(item + 1).Filename 

del outlook, msg 
+4

Es ist wichtig zu beachten, dass die OpenSharedItem-Methode einen absoluten Pfad erwartet, sonst erhalten Sie einen Fehler. – smartexpert

+1

Ich habe Probleme mit der Codierung. Wie kannst du das lösen? – firko

3

Auch wenn dies ein alter Thread, ich hoffe, diese Informationen könnten jemanden helfen, die nach einer Lösung suchen, was der Thread Thema genau sagt. Ich empfehle dringend, die Lösung mattgwwalker in github zu verwenden, die OleFileIO_PL module erfordert, extern installiert zu werden.

0

Ich habe die Python-E-Mail-Modul versucht, und manchmal, die nicht erfolgreich die msg-Datei nicht analysieren.

Also, in diesem Fall, wenn Sie nur nach Text oder HTML sind, funktionierte der folgende Code für mich.

start_text = "<html>" 
end_text = "</html>" 
def parse_msg(msg_file,start_text,end_text): 
    with open(msg_file) as f: 
    b=f.read() 
    return b[b.find(start_text):b.find(end_text)+len(end_text)] 

print parse_msg(path_to_msg_file,start_text,end_text)