2014-10-12 5 views
12

Посмотрел вокруг и не смог найти удовлетворительного ответа. Кто-нибудь знает, как разбирать .msg-файлы из Outlook с помощью Python?Parsing outlook .msg файлы с python

Я пробовал использовать mimetools и email.parser без везения. Помощь будет принята с благодарностью!

ответ

12

Это работает для меня:

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

Важно отметить, что метод OpenSharedItem ожидает абсолютного пути, иначе вы получите сообщение об ошибке. – smartexpert

+1

У меня, похоже, проблемы с кодировкой. Как вы можете это решить? – firko

3

Несмотря на то, что это старая нить, я надеюсь, что эта информация может помочь кому-то, кто ищет решения, что субъект нити точно говорит. Я настоятельно рекомендую использовать решение mattgwwalker in github, которое требует установки OleFileIO_PL module.

0

Я пробовал модуль питона электронной почты, а иногда, что не сможет успешно разобрать файл Сообщ.

Итак, в этом случае, если вы только после текста или html, для меня работал следующий код.

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) 
Смежные вопросы