Wprowadzenie

Aspose.Email FOSS for Python jest teraz dostępny w PyPI: darmowa, licencjonowana na licencji MIT biblioteka do tworzenia, odczytywania i konwertowania plików Outlook .msg w całości w Pythonie, bez zależności od Microsoft Office ani żadnych natywnych rozszerzeń. Zainstaluj ją przy pomocy pip install aspose-email-foss>=26.3 i od razu rozpocznij pracę z kontenerami MSG i CFB.

Biblioteka jest przeznaczona dla Pythona 3.10 i nowszych. Implementuje format Compound File Binary (CFB) oraz format wiadomości MSG od podstaw, dając Ci deterministyczną kontrolę nad tym, jak wiadomości e‑mail są serializowane i odczytywane. Ponieważ implementacja jest czystym Pythonem, działa identycznie na Windows, macOS, Linux oraz w środowiskach konteneryzowanych.

Aspose.Email FOSS jest przeznaczony dla programistów budujących potoki przetwarzania e‑maili, narzędzia archiwizacji zgodności, przepływy pracy analizy kryminalistycznej lub dowolną aplikację, która musi tworzyć lub przeglądać pliki wiadomości zgodne z Outlookiem bez uruchomionego Exchange lub instalacji Outlooka.


Kluczowe funkcje

Utwórz pliki MSG

Utwórz pliki kompatybilne z Outlook .msg od podstaw, używając MapiMessage.create(). Ustaw standardowe właściwości MAPI, takie jak temat, nadawca, czas dostarczenia i pola wyświetlania, za pomocą wyliczenia PropertyId. Dodaj odbiorców przy pomocy add_recipient() oraz załączniki plików przy pomocy add_attachment(), a następnie zapisz wynik na dysku.

from aspose.email_foss import msg

message = msg.MapiMessage.create(
    "Quarterly status update and rollout plan",
    "Hello team,\n\nPlease find the latest rollout summary attached.\n\nRegards,\nEngineering",
)

message.set_property(msg.PropertyId.SENDER_NAME, "Build Agent")
message.set_property(msg.PropertyId.SENDER_EMAIL_ADDRESS, "build.agent@example.com")
message.set_property(msg.PropertyId.INTERNET_MESSAGE_ID, "<example-001@example.com>")

message.add_recipient("alice@example.com", display_name="Alice Example")
message.add_recipient("bob@example.com", display_name="Bob Example")
message.add_recipient(
    "carol@example.com",
    display_name="Carol Example",
    recipient_type=msg.RECIPIENT_TYPE_CC,
)

message.add_attachment("hello.txt", b"sample attachment\n", mime_type="text/plain")
message.save("example-message.msg")

Odczytaj i konwertuj MSG do EML

Wczytaj istniejący plik .msg przy użyciu MapiMessage.from_file() i przekształć go w standardowy obiekt Pythona EmailMessage za pomocą to_email_message(). Następnie zserializuj go do bajtów EML w celu przechowywania lub przekazywania przez SMTP.

from aspose.email_foss import msg

with msg.MapiMessage.from_file("example-message.msg") as loaded:
    email_message = loaded.to_email_message()
    eml_bytes = email_message.as_bytes()

with open("example-message.eml", "wb") as f:
    f.write(eml_bytes)

Sprawdź wewnętrzne struktury MSG

Użyj MsgReader i jego podstawowego CFBReader do zbadania binarnej struktury pliku MSG. Uzyskaj dostęp do metadanych CFB (wersja, rozmiar sektora, liczba wpisów katalogu) i iteruj po wpisach właściwości MAPI na poziomie binarnym.

from aspose.email_foss import msg

reader = msg.MsgReader.from_file("example-message.msg")
cfb = reader.cfb_reader

print(f"CFB major_version={cfb.major_version}")
print(f"sector_size={cfb.sector_size}")
print(f"directory_entries={cfb.directory_entry_count}")

for entry in reader.iter_top_level_fixed_length_properties():
    tag = entry.property_tag
    print(f"tag=0x{tag:08X} flags=0x{entry.flags:08X} value={entry.value.hex()}")

reader.close()

Dostęp niskopoziomowy do CFB

Odczytaj i przeglądaj dowolny kontener Compound File Binary przy użyciu CFBReader. Wyliczaj magazyny i strumienie, rozwiąż ścieżki według nazwy i wyodrębnij surowe dane strumienia do własnego przetwarzania.

from aspose.email_foss.cfb import CFBReader

reader = CFBReader.from_file("example-message.msg")

for entry in reader.iter_storages():
    print(f"Storage: {entry.name}")

for entry in reader.iter_streams():
    data = reader.get_stream_data(entry.stream_id)
    print(f"Stream: {entry.name} size={len(data)}")

reader.close()

Szybki start

Zainstaluj bibliotekę i utwórz swój pierwszy plik MSG w mniej niż dziesięciu linijkach:

pip install aspose-email-foss>=26.3
from aspose.email_foss import msg

message = msg.MapiMessage.create("Hello from Python", "This is a test message.")
message.set_property(msg.PropertyId.SENDER_EMAIL_ADDRESS, "sender@example.com")
message.add_recipient("recipient@example.com", display_name="Recipient")
message.save("hello.msg")

with msg.MapiMessage.from_file("hello.msg") as loaded:
    eml = loaded.to_email_message()
    print(eml["Subject"])

Obsługiwane formaty

FormatImportEksport
MSGTakTak
CFBTakTak

Open Source i licencjonowanie

Aspose.Email FOSS for Python jest udostępniony na licencji MIT License. Możesz go używać w projektach osobistych, wewnętrznych i komercyjnych bez ograniczeń. Kod źródłowy jest dostępny na GitHub.


Rozpoczęcie