Python kullanarak Outlook.msg dosyalarını ayrıştırma

Etrafıma baktım ve tatmin edici bir cevap bulamadım. Python kullanarak Outlook'tan .msg dosyalarını nasıl ayrıştırılacağını bilen var mı?

Mimetools ve email.parser 'ı şanssız kullanmaya çalıştım. Yardım çok takdir edilecektir!

22
12 окт. Michael tarafından 12 Ekim'de ayarla 2014-10-12 08:41 14, 08:41, 2014-10-12 08:41
@ 7 cevaplar

Benim için çalışıyor:

 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 
28
25 мая '15 в 22:45 2015-05-25 22:45 Brent Edwards'a 25 Mayıs 'da saat 10: 45'te cevap verdi 2015-05-25 22:45

Eski bir konu olsa bile, bu bilgilerin konu temasının kesin olarak söylediklerine bir çözüm arayan birine yardımcı olabileceğini umuyorum. Mattgwwalker çözümünü, OleFileIO_PL modülünün dışarıya monte edilmesini gerektiren github'da kullanmanızı şiddetle tavsiye ediyorum.

border=0
3
14 мая '15 в 5:52 2015-05-14 05:52 Cevap, fatih_dur , 14 Mayıs, 15, 05: 52'de , 2015-05-14 05:52

İlgili alanları Matt Walker'ın msg-extractor yardımcı programını kullanarak MS Outlook dosyalarından (.msg) çıkarmayı başardım: https://github.com/mattgwwalker/msg-extractor

İşte adımlarım:

 pip install https://github.com/mattgwwalker/msg-extractor/zipball/master 

Bunun ek modüllerin kurulmasını gerektirebileceğini lütfen unutmayın, benim durumumda imapclient'in yüklenmesi gerekiyor:

 pip install imapclient 

Matt Page, MsgExtractor komut satırının nasıl kullanılacağını açıklar. Jupyter not defterinde kullandım:

 import ExtractMsg import glob f = glob.glob(r'C:\filedir\MS_Outlook_file.msg') ## Replace with yours msg = ExtractMsg.Message(f) msg_sender = msg.sender msg_date = msg.date msg_subj = msg.subject msg_message = msg.body print('Sender: {}'.format(msg_sender)) print('Sent On: {}, Sender: {}'.format(msg_date)) print('Subject: {}'.format(msg_subj)) print('Body: {}'.format(msg_message)) 

MsgExtractor yardımcı programında öğrenilmesi gereken birçok başka yardımcı program var, ancak bu iyi bir baş>

 #""" #ExtractMsg: # Extracts emails and attachments saved in Microsoft Outlook .msg files # #https://github.com/mattgwwalker/msg-extractor #""" 

Hata mesajı şuydu:

 line 3 ExtractMsg: ^ SyntaxError: invalid syntax 

Bu satırları engelledikten sonra hata mesajı kayboldu ve kod gayet iyi çalıştı.

3
06 апр. Cevap Vladimir Lukin 06 nisan verildi . 2018-04-06 00:10 '18, 0:10 2018-04-06 00:10

Aşağıdaki linklere bakınız:
[MS-OXMSG]: Outlook dosya formatı (.msg) ,
.Msg dosyalarından okuyun ,
Kaydedilen Outlook * .msg mesaj dosyasını düzenleyin

Redemption ve RDOSession'ı da kullanabilirsiniz. GetMessageFromMsgFile :

  set Session = CreateObject("Redemption.RDOSession") set Msg = Session.GetMessageFromMsgFile("c:\temp\test.msg") MsgBox Msg.Subject 
1
12 окт. Cevap veren Dmitry Streblechenko 12 Eki 2014-10-12 21:41 '14, 21:41 2014-10-12 21:41

Python e-posta modülünü denedim ve bazen msg dosyasını ayrıştırmadım.

Yani, bu durumda, sadece metin veya html'den sonraysanız, aşağıdaki kod benim için çalıştı.

 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) 
0
04 окт. Cevap paolov 04 ekimde verildi . 2017-10-04 11:00 '17 11:00 2017-10-04 11:00

Bunu yukarıda belirtilen Vladimir ile aynı şekilde sökebildim. Ancak, bir for döngüsü ekleyerek küçük değişiklikler yapmam gerekiyordu. Glob.glob (r'c: \ test_email * .msg ') bir liste döndürürken, Message (f) bir dosya veya str bekler.

 f = glob.glob(r'c:\test_email\*.msg') for filename in f: msg = ExtractMsg.Message(filename) msg_sender = msg.sender msg_date = msg.date msg_subj = msg.subject msg_message = msg.body 
0
23 мая '18 в 20:19 2018-05-23 20:19 Cevap Sazzad tarafından 23 Mayıs 1918'de 20:19 2018-05-23 20:19 tarihinde verilmiştir.

Mattgwwalker yardımcı programını yukarıda açıklanan yöntemi kullanarak yüklemeye çalıştım, ancak aşağıdaki hatayı aldım:

 C:\Users\jo>pip install https://github.com/mattgwwalker/msg-extractor/zipball/master Collecting https://github.com/mattgwwalker/msg-extractor/zipball/master Downloading https://github.com/mattgwwalker/msg-extractor/zipball/master \ 6.3MB 51.1MB/s Complete output from command python setup.py egg_info: Traceback (most recent call last): File "<string>", line 1, in <module> File "C:\Users\jo\AppData\Local\Temp\pip-req-build-xv_n28zg\setup.py", line 13, in <module> long_description = stream.read() File "c:\users\jo\scoop\apps\python\current\lib\encodings\cp1252.py", line 23, in decode return codecs.charmap_decode(input,self.errors,decoding_table)[0] UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 550: character maps to <undefined> ---------------------------------------- Command "python setup.py egg_info" failed with error code 1 in C:\Users\jo\AppData\Local\Temp\pip-req-build-xv_n28zg\ 

Sonra pip install extract-msg çalıştırdım ve işe yaradı. pip show extract-msg kurulduktan sonra pip show extract-msg gösterir

 Name: extract-msg Version: 0.21.0 Summary: Extracts emails and attachments saved in Microsoft Outlook .msg files Home-page: https://github.com/mattgwwalker/msg-extractor Author: Matthew Walker  The Elemental of Creation Author-email: mattgwwalker@gmail.com, arceusthe@gmail.com License: GPL Location: c:\users\jo\scoop\apps\python\current\lib\site-packages Requires: tzlocal, olefile, imapclient Required-by: 

Yukarıda Vladimir Lukin tarafından yayınlanan kod bazı değişiklikler ile çalıştı:

 import extract_msg msg = extract_msg.Message(r'C:\filedir\MS_Outlook_file.msg') ## Replace with yours msg_sender = msg.sender msg_date = msg.date msg_subj = msg.subject msg_message = msg.body print('Sender: {}'.format(msg_sender)) print('Sent On: {}'.format(msg_date)) print('Subject: {}'.format(msg_subj)) print('Body: {}'.format(msg_message)) 

Belki de bütün bu değişiklikleri mattgwwalker yardımcı programındaki güncellemeler nedeniyle yapmak zorunda kaldım.

0
17 янв. cevap eli 17 jan verilir . 2019-01-17 00:55 '19 , 0:55 2019-01-17 00:55

etiketleri ile ilgili diğer sorular veya bir soru sorun