Kā parsēt MSG failus Python valodā

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-foss

Pieprasa Python 3.10 vai jaunāku.


2. solis: Importēt MapiMessage klasi

from aspose.email_foss.msg import MapiMessage

3. 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.

 Latviešu