Funkcje i funkcjonalności

Funkcje i funkcjonalności

Ta strona opisuje wszystkie główne funkcje aspose-email-foss 26.3 z działającymi Python przykładami.


Odczytywanie plików MSG

Wczytaj plik MSG i uzyskaj dostęp do jego podstawowych właściwości:

from aspose.email_foss.msg import MapiMessage

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

print(f"Subject: {msg.subject}")
print(f"Body: {msg.body}")
print(f"HTML Body: {msg.body_html}")
print(f"Message Class: {msg.message_class}")

Tworzenie plików MSG

Utwórz nową wiadomość od podstaw:

from aspose.email_foss.msg import MapiMessage

msg = MapiMessage.create("Meeting Notes", "Please find the notes attached.")
msg.save("new_message.msg")

Ustaw temat i treść w istniejącej wiadomości:

msg.subject = "Updated Subject"
msg.body = "Updated body text"
msg.save("updated.msg")

Odbiorcy

Dodaj odbiorców z nazwami wyświetlanymi i typami:

from aspose.email_foss.msg import MapiMessage, RECIPIENT_TYPE_CC

msg = MapiMessage.create("Hello", "Message body")
msg.add_recipient("alice@example.com", display_name="Alice Smith")
msg.add_recipient("bob@example.com", display_name="Bob Jones", recipient_type=RECIPIENT_TYPE_CC)
msg.save("with_recipients.msg")

Załączniki

Dodaj binarne załączniki plików:

with open("report.pdf", "rb") as f:
    data = f.read()

msg.add_attachment("report.pdf", data, mime_type="application/pdf")
msg.save("with_attachment.msg")

Osadź wiadomość MSG jako zagnieżdżony załącznik:

inner = MapiMessage.create("Inner Subject", "Inner body")
msg.add_embedded_message_attachment(inner, filename="embedded.msg", mime_type="application/vnd.ms-outlook")
msg.save("with_embedded.msg")

Właściwości MAPI

Odczytuj i zapisuj właściwości MAPI według identyfikatora właściwości:

from aspose.email_foss.msg import PropertyId

# Read a property
subject = msg.get_property(PropertyId.SUBJECT)

# Set a property
msg.set_property(PropertyId.SUBJECT, "New Subject")

Iteruj wszystkie właściwości:

for prop in msg.iter_properties():
    print(f"Tag: {prop.property_tag:#010x}")

Konwersja e-maili

Konwertuj pomiędzy formatami MSG (MAPI) i e-mail (RFC 5322):

# MSG to email string
email_str = msg.to_email_string()
print(email_str[:500])

# MSG to EmailMessage object
email_msg = msg.to_email_message()

# EmailMessage back to MapiMessage
msg2 = MapiMessage.from_email_message(email_msg)
msg2.save("roundtrip.msg")

Operacje niskopoziomowe CFB

Odczytaj strukturę kontenera CFB bezpośrednio:

from aspose.email_foss.cfb import CFBReader

reader = CFBReader.from_file("message.msg")
print(f"File size: {reader.file_size} bytes")
print(f"Sectors: {reader.fat_sector_count}")
print(f"Entries: {reader.directory_entry_count}")

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

for entry in reader.iter_streams():
    print(f"Stream: {entry}")

reader.close()

Zapisz dokumenty CFB:

from aspose.email_foss.msg import MsgWriter

data = msg.to_bytes()
with open("output.msg", "wb") as f:
    f.write(data)

Wskazówki i najlepsze praktyki

  • Zawsze wywołuj msg.close() lub użyj menedżera kontekstu po zakończeniu odczytu, aby zwolnić uchwyty plików
  • Użyj msg.validation_issues aby sprawdzić problemy z zgodnością formatu MSG
  • Ten strict parametr w MapiMessage.from_file() kontroluje tolerancję błędów — ustaw na False dla łagodnego parsowania
  • Wszystkie dane załączników są ładowane do pamięci podczas from_file() — użyj att.data aby uzyskać dostęp do bajtów bezpośrednio; iter_attachments_info() jest wygodnym iteratorem nad już wypełnioną listą załączników
  • Użyj to_email_string() do szybkich podglądów tekstu bez pełnego tworzenia obiektu e‑mail

Typowe problemy

ProblemPrzyczynaNaprawa
CFBError podczas ładowaniaNieprawidłowy plik CFB/MSGZweryfikuj, że plik jest rzeczywistym plikiem Outlook MSG
Puste ciało po załadowaniuTreść przechowywana wyłącznie w HTMLSprawdź msg.body_html zamiast msg.body
Brak odbiorcówMSG nie ma przechowywania odbiorcówOdbiorcy są opcjonalni w formacie MSG; sprawdź iter_attachments_info()

FAQ

Jakie wersje formatu MSG są obsługiwane?

Biblioteka odczytuje i zapisuje pliki MSG w formacie CFB v3 i v4, zgodnym z Microsoft Outlook.

Czy mogę odczytać pliki EML?

Nie bezpośrednio. Biblioteka obsługuje format MSG. Użyj MapiMessage.from_email_message() aby przekonwertować z RFC 5322 EmailMessage obiekty.

Czy obsługiwane jest bezpieczeństwo wątkowe?

Każdy MapiMessage i CFBReader instancja jest niezależna. Jednoczesny dostęp do oddzielnych instancji z różnych wątków jest bezpieczny.


Podsumowanie odniesienia API

Klasa / MetodaOpis
MapiMessageReprezentacja wiadomości MSG na wysokim poziomie
MapiMessage.from_file()Wczytaj plik MSG
MapiMessage.create()Utwórz nową wiadomość MSG
MapiMessage.save()Zapisz do pliku MSG
MapiMessage.to_email_message()Konwertuj na EmailMessage (RFC 5322)
MapiMessage.from_email_message()Konwertuj z EmailMessage do MSG
MapiMessage.add_recipient()Dodaj odbiorcę
MapiMessage.add_attachment()Dodaj załącznik binarny
MapiAttachmentZałącznik w wiadomości
MapiRecipientOdbiorca w wiadomości
MapiPropertyWpis właściwości MAPI
CFBReaderCzytnik kontenera CFB niskiego poziomu
CFBWriterZapisujący kontener CFB niskiego poziomu
MsgReaderCzytnik struktury MSG niskiego poziomu
 Polski