Πώς να Αναλύσετε Αρχεία MSG σε Python

Πώς να Αναλύσετε Αρχεία MSG σε Python

aspose-email-foss for Python παρέχει μια καθαρά-Python API για την ανάγνωση αρχείων Outlook MSG χωρίς εξαρτήσεις από το Microsoft Office. Φορτώστε ένα αρχείο σε ένα αντικείμενο MapiMessage για να έχετε πρόσβαση σε όλα τα δεδομένα του μηνύματος.

Οδηγός βήμα-βήμα

Βήμα 1: Εγκατάσταση του πακέτου

pip install aspose-email-foss

Απαιτεί Python 3.10 ή νεότερη έκδοση.


Βήμα 2: Εισαγωγή της κλάσης MapiMessage

from aspose.email_foss.msg import MapiMessage

Βήμα 3: Φόρτωση αρχείου MSG

msg = MapiMessage.from_file("message.msg")

Για επιεική ανάλυση κατεστραμμένων αρχείων, περάστε strict=False:

msg = MapiMessage.from_file("message.msg", strict=False)

Βήμα 4: Πρόσβαση στις Ιδιότητες του Μηνύματος

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}")

Βήμα 5: Λίστα Συνημμένων

for att in msg.iter_attachments_info():
    name = att.storage_name
    is_embedded = att.is_embedded_message
    print(f"Attachment: {name}, embedded={is_embedded}")

Βήμα 6: Εξέταση της δομής CFB χαμηλού επιπέδου

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()

Κοινά προβλήματα και διορθώσεις

CFBError κατά τη φόρτωση

Το αρχείο δεν είναι έγκυρο κοντέινερ CFB. Επαληθεύστε ότι είναι πραγματικό αρχείο Outlook MSG, όχι ένα EML.

Το σώμα είναι κενό, αλλά το HTML σώμα έχει περιεχόμενο

Ορισμένα μηνύματα αποθηκεύουν το περιεχόμενο μόνο σε HTML. Ελέγξτε msg.body_html όταν msg.body επιστρέφει None.

Προειδοποιήσεις επικύρωσης

Πρόσβαση msg.validation_issues για να δείτε μια πλειάδα προειδοποιήσεων συμμόρφωσης για το φορτωμένο αρχείο.


Συχνές Ερωτήσεις (FAQ)

Μπορώ να διαβάσω αρχεία EML;

Όχι άμεσα. Η βιβλιοθήκη διαχειρίζεται τη μορφή MSG (CFB). Μετατρέψτε το περιεχόμενο EML σε αντικείμενο EmailMessage πρώτα, έπειτα χρησιμοποιήστε MapiMessage.from_email_message().

Η φόρτωση διαβάζει όλα τα δεδομένα του συνημμένου στη μνήμη;

Όχι. Τα μεταδεδομένα του συνημμένου διαβάζονται κατ’ απαίτηση. Χρησιμοποιήστε iter_attachments_info() για ελαφριά επανάληψη.

Είναι ασφαλές ως προς τα νήματα;

Κάθε MapiMessage παράδειγμα είναι ανεξάρτητο. Οι ταυτόχρονες αναγνώσεις από ξεχωριστά παραδείγματα είναι ασφαλείς.

 Ελληνικά