Einführung
Das programmatische Parsen von E-Mail-Nachrichten ist eine häufige Anforderung für Datenmigration, Archivarbeitsflüsse und Compliance-Tools. Outlook MSG-Dateien verwenden das Containerformat Compound File Binary (CFB) mit MAPI-Eigenschaften zur Kodierung von Nachrichtemetadaten, Körperinhalten, Empfängern und Anhängen. Die Arbeit mit diesem Format in Python erfordert traditionell entweder kommerzielle Bibliotheken oder binäre Manipulation auf niedriger Ebene.
Die aspose-email-foss Das Paket bietet eine reine Python-Lizenzbibliothek für das Lesen, Erstellen und Konvertieren von Outlook MSG Dateien. Es stellt ein hochwertiges Programm zur Verfügung. MapiMessage API für gemeinsame Aufgaben neben der unteren Ebene MsgReader Die Bibliothek erfordert Python 3.10 oder höher und hat keine nativen Abhängigkeiten.
Ob Sie die Betreffzeile und den Körper aus einer Reihe von archivierten Nachrichten extrahieren, Anhänge für das Indexieren aufzählen oder MSG-Dateien in das Standardformat RFC 5322 konvertieren müssen, diese Bibliothek handhabt das binäre Parsing, damit Sie sich auf Ihre Anwendungslogik konzentrieren können.
Was ist darin enthalten?
MSG-Dateien mit MapiMessage lesen
Die MapiMessage class ist der primäre Einstiegspunkt für das Parsen von Outlook MSG-Dateien. Öffnen Sie eine Datei, greifen Sie auf ihre Eigenschaften zu und schließen Sie sie mit einem Kontextmanager sauber.
from aspose.email_foss import msg
with msg.MapiMessage.from_file("meeting-invite.msg") as message:
print(f"Subject: {message.subject}")
print(f"Body: {message.body[:200]}")
print(f"HTML body available: {message.body_html is not None}")
Die from_file Methode liest den CFB-Container, analysiert die MAPI-Property Streams und füllt eingetippte Attribute. subject, body,und . body_html Eigenschaften geben dekodierte Zeichenketten direkt zurück.
Entnahme von Empfängern
Jede MSG-Datei speichert Empfängerinformationen in speziellen MAPI-Speichern. MapiMessage.recipients Eigenschaft gibt eine Liste von MapiRecipient Objekte mit eingetipften Feldern für Anzeigennamen, E-Mail-Adresse und Empfängertyp (TO, CC oder BCC).
from aspose.email_foss import msg
with msg.MapiMessage.from_file("team-update.msg") as message:
for recipient in message.recipients:
print(
f"{recipient.display_name} <{recipient.email_address}> "
f"type={recipient.recipient_type}"
)
Arbeiten mit Anhängen
Die iter_attachments_info Methodenerträge MapiAttachment Objekte, die den Dateinamen, Rohbyte, MIME-Typ und optionale Content-ID für Inline-Bilder bereitstellen.
from aspose.email_foss import msg
with msg.MapiMessage.from_file("report.msg") as message:
for att in message.iter_attachments_info():
print(f" {att.filename} ({att.mime_type}, {len(att.data)} bytes)")
if att.content_id:
print(f" inline content-id: {att.content_id}")
Zugriff auf MAPI-Eigenschaften
Für Szenarien, die spezifische MAPI-Eigenschaftswerte über die Komfortattribute hinaus verlangen, verwenden Sie get_property_value mit einem PropertyId Dies bietet direkten Zugriff auf alle Eigenschaften, die in der MSG-Datei gespeichert sind.
from aspose.email_foss import msg
with msg.MapiMessage.from_file("notification.msg") as message:
sender = message.get_property_value(msg.PropertyId.SENDER_NAME)
email = message.get_property_value(msg.PropertyId.SENDER_EMAIL_ADDRESS)
delivery = message.get_property_value(msg.PropertyId.MESSAGE_DELIVERY_TIME)
print(f"From: {sender} <{email}>")
print(f"Delivered: {delivery}")
Iteration aller Eigenschaften
Wenn Sie jede Eigenschaft in einer Nachricht (für Debugging, Auditing oder Migration) überprüfen müssen, wird die iter_properties Methodenerträge MapiProperty Objekte mit vollständigen Kennzeichnungs- und Wertinformationen.
from aspose.email_foss import msg
with msg.MapiMessage.from_file("sample.msg") as message:
for prop in message.iter_properties():
print(
f"tag=0x{prop.property_tag:08X} "
f"type=0x{prop.property_type:04X} "
f"value={prop.value!r}"
)
Umwandlung von MSG in EML
Die to_email_message Methode konvertiert ein analysiertes MSG in einen Standard Python. email.message.EmailMessage Objekt. Von dort können Sie die Nachricht in RFC 5322 (EML) Format mit der Standardbibliothek serialisieren.
from aspose.email_foss import msg
with msg.MapiMessage.from_file("archive.msg") as message:
email_message = message.to_email_message()
eml_bytes = email_message.as_bytes()
with open("archive.eml", "wb") as f:
f.write(eml_bytes)
Beachten Sie, dass EML-Ausgabe Python’s integrierte verwendet email Modul für die Serialisierung. Die Bibliothek verwaltet den MSG-to-MAPI-To-EmailMessage Umwandlung; die Standardbibliothik behandelt das RFC 5322 Wire Format.
Schneller Start
Installieren Sie das Paket von PyPI und analysieren Ihre erste MSG-Datei in unter 20 Zeilen:
# Install: pip install aspose-email-foss>=26.3
from aspose.email_foss import msg
# Create a new message
message = msg.MapiMessage.create(
"Project status update",
"Hello team,\n\nPlease review the attached report.\n\nRegards",
)
message.add_recipient("alice@example.com", display_name="Alice")
message.add_attachment("notes.txt", b"meeting notes\n", mime_type="text/plain")
message.save("status-update.msg")
# Read it back and extract data
with msg.MapiMessage.from_file("status-update.msg") as loaded:
print(f"Subject: {loaded.subject}")
print(f"Recipients: {len(loaded.recipients)}")
for att in loaded.iter_attachments_info():
print(f"Attachment: {att.filename} ({len(att.data)} bytes)")
Unterstützte Formate
| Format der Datenbank | Erweiterung | Lesen Sie . | Schreiben . |
|---|---|---|---|
| Ausblick MSG | .msg | - Ja , das ist gut . | - Ja , das ist gut . |
| Binäre Datei mit Kompound-Dateien | .cfb | - Ja , das ist gut . | - Ja , das ist gut . |
| EML (über Umwandlung) | .eml | Ja (über die from_email_message) | Ja (über die to_email_message) |
EML-Unterstützung erfolgt durch Umwandlung: MapiMessage.from_email_message() Einfuhren aus einem Python-System email.message.EmailMessage Gegenstand und to_email_message() Die direkte EML-Dateianalyse ist nicht bereitgestellt die Standardbibliothek verarbeitet das EM L Wire Format.
Open Source und Lizenzierung
Aspose.Email FOSS for Python is released under the MIT license. You are free to use, modify, and distribute the library in both commercial and non-commercial projects. The full source code is available on GitHub.
Die Bibliothek ist eine reine Python-Implementierung ohne kompilierte Erweiterungen oder native Abhängigkeiten. Sie läuft auf jeder Plattform, die Python 3.10 oder höher unterstützt.
Wie man anfängt
Erforschung von weiteren Ressourcen für die Arbeit mit Aspose.E-Mail FOSS für Python:
- Entwickler-Leitfaden Vollständige Dokumentation mit Tutorials und API-Wagthroughs
- Wissensbasis Artikel mit Anleitungen und häufig gestellte Fragen
- Referenz für die API vollständige Klassen- und Methodenreferenz