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_issuesaby sprawdzić problemy z zgodnością formatu MSG - Ten
strictparametr wMapiMessage.from_file()kontroluje tolerancję błędów — ustaw naFalsedla łagodnego parsowania - Wszystkie dane załączników są ładowane do pamięci podczas
from_file()— użyjatt.dataaby 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
| Problem | Przyczyna | Naprawa |
|---|---|---|
CFBError podczas ładowania | Nieprawidłowy plik CFB/MSG | Zweryfikuj, że plik jest rzeczywistym plikiem Outlook MSG |
| Puste ciało po załadowaniu | Treść przechowywana wyłącznie w HTML | Sprawdź msg.body_html zamiast msg.body |
| Brak odbiorców | MSG nie ma przechowywania odbiorców | Odbiorcy 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 / Metoda | Opis |
|---|---|
MapiMessage | Reprezentacja 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 |
MapiAttachment | Załącznik w wiadomości |
MapiRecipient | Odbiorca w wiadomości |
MapiProperty | Wpis właściwości MAPI |
CFBReader | Czytnik kontenera CFB niskiego poziomu |
CFBWriter | Zapisujący kontener CFB niskiego poziomu |
MsgReader | Czytnik struktury MSG niskiego poziomu |