Kā parsēt MSG failus Python valodā
aspose-email-foss for Python nodrošina tīri Python API Outlook MSG failu nolasīšanai bez Microsoft Office atkarībām. Ielādējiet failu MapiMessage objektā, lai piekļūtu visiem ziņojuma datiem.
Solī pa solim ceļvedis
Solis 1: instalēt pakotni
pip install aspose-email-fossPieprasa Python 3.10 vai jaunāku.
2. solis: Importēt MapiMessage klasi
from aspose.email_foss.msg import MapiMessage3. solis: Ielādēt MSG failu
msg = MapiMessage.from_file("message.msg")Lai veiktu laipnāku nepareizi formatētu failu parsēšanu, nododiet strict=False:
msg = MapiMessage.from_file("message.msg", strict=False)Solis 4: Piekļūt ziņojuma īpašībām
print(f"Subject: {msg.subject}")
print(f"Body: {msg.body}")
print(f"HTML Body: {msg.body_html[:200] if msg.body_html else 'None'}")
print(f"Message Class: {msg.message_class}")Solis 5: Uzskaitīt pielikumus
for att in msg.iter_attachments_info():
name = att.storage_name
is_embedded = att.is_embedded_message
print(f"Attachment: {name}, embedded={is_embedded}")Solis 6: Pārbaudīt zemā līmeņa CFB struktūru
from aspose.email_foss.cfb import CFBReader
reader = CFBReader.from_file("message.msg")
print(f"Directory entries: {reader.directory_entry_count}")
for entry in reader.iter_streams():
print(f" Stream: {entry}")
reader.close()Biežas problēmas un risinājumi
CFBError ielādējot
Fails nav derīgs CFB konteiners. Pārbaudiet, vai tas ir īsts Outlook MSG fails, nevis EML.
Ķermenis ir tukšs, bet HTML ķermenis satur saturu
Daži ziņojumi saglabā saturu tikai HTML. Pārbaudiet msg.body_html, kad msg.body atgriež None.
Validācijas brīdinājumi
Piekļūstiet msg.validation_issues, lai redzētu atbilstības brīdinājumu virkni ielādētajam failam.
Biežāk uzdotie jautājumi (BUJ)
Vai es varu lasīt EML failus?
Ne tieši. Bibliotēka apstrādā MSG (CFB) formātu. Vispirms pārvērtiet EML saturu par EmailMessage objektu, pēc tam izmantojiet MapiMessage.from_email_message().
Vai ielāde nolasīs visus pievienojuma datus atmiņā?
Nē. Pielikuma metadati tiek nolasīti pēc pieprasījuma. Izmantojiet iter_attachments_info() vieglai iterācijai.
Vai tas ir pavediena drošs?
Katrs MapiMessage instances ir neatkarīgs. Vienlaicīgi lasījumi no atsevišķām instancēm ir droši.