Характеристики и функционалности
Характеристики и функционалности
Тази страница обхваща всяка основна функция на aspose-email-foss 26.3 с работещи Python примери.
Четене на MSG файлове
Заредете MSG файл и достъпете неговите основни свойства:
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}")Създаване на MSG файлове
Създайте ново съобщение от нулата:
from aspose.email_foss.msg import MapiMessage
msg = MapiMessage.create("Meeting Notes", "Please find the notes attached.")
msg.save("new_message.msg")Задайте тема и тяло на съществуващо съобщение:
msg.subject = "Updated Subject"
msg.body = "Updated body text"
msg.save("updated.msg")Получатели
Добавете получатели с имена за показване и типове:
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")Прикачени файлове
Добавете бинарни прикачени файлове:
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")Вградете MSG съобщение като вложен прикачен файл:
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")MAPI свойства
Четете и записвайте MAPI свойства по идентификатор на свойство:
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")Итерация през всички свойства:
for prop in msg.iter_properties():
print(f"Tag: {prop.property_tag:#010x}")Конвертиране на имейл
Конвертиране между формати MSG (MAPI) и имейл (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")Операции на ниско ниво с CFB
Прочетете структурата на CFB контейнера директно:
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()Записване на CFB документи:
from aspose.email_foss.msg import MsgWriter
data = msg.to_bytes()
with open("output.msg", "wb") as f:
f.write(data)Съвети и най‑добри практики
- Винаги извикайте
msg.close()или използвайте контекстен мениджър, след като приключите с четенето, за да освободите файловите дескриптори - Използвайте
msg.validation_issuesза проверка на проблеми със съответствието на формата MSG - Това
strictпараметър вMapiMessage.from_file()контролира толеранса на грешки — задайте наFalseза по‑нежно парсиране - Всички данни за прикачените файлове се зареждат в паметта по време на
from_file()— използвайтеatt.dataза директен достъп до байтовете;iter_attachments_info()е удобен итератор върху вече попълнения списък с прикачени файлове - Използвайте
to_email_string()за бързи прегледи на текста без пълно конструиране на имейл обект
Чести проблеми
| Проблем | Причина | Поправка |
|---|---|---|
CFBError при зареждане | Не е валиден CFB/MSG файл | Проверете дали файлът е действителен Outlook MSG |
| Празно тяло след зареждане | Тялото е съхранено само в HTML | Провери msg.body_html вместо msg.body |
| Липсващи получатели | MSG няма съхранения за получатели | Получателите са опционални в MSG формата; проверете iter_attachments_info() |
FAQ
Кои версии на формата MSG се поддържат?
Библиотеката чете и записва MSG файлове във формат CFB v3 и v4, съвместим с Microsoft Outlook.
Мога ли да чета EML файлове?
Не директно. Библиотеката обработва MSG формата. Използвайте MapiMessage.from_email_message() за конвертиране от RFC 5322 EmailMessage обекти.
Поддържа ли се безопасност при нишки?
Всеки MapiMessage и CFBReader екземплярът е независим. Паралелният достъп до отделни екземпляри от различни нишки е безопасен.
Обобщение на API справката
| Клас / Метод | Описание |
|---|---|
MapiMessage | Високо ниво представяне на MSG съобщение |
MapiMessage.from_file() | Зареждане на MSG файл |
MapiMessage.create() | Създайте ново MSG съобщение |
MapiMessage.save() | Запазете в MSG файл |
MapiMessage.to_email_message() | Конвертирайте към EmailMessage (RFC 5322) |
MapiMessage.from_email_message() | Конвертирайте от EmailMessage към MSG |
MapiMessage.add_recipient() | Добавете получател |
MapiMessage.add_attachment() | Добавете двоично прикачване |
MapiAttachment | Прикачен файл в съобщение |
MapiRecipient | Получател в съобщение |
MapiProperty | MAPI свойство запис |
CFBReader | Четец на CFB контейнер на ниско ниво |
CFBWriter | Писач на CFB контейнер на ниско ниво |
MsgReader | Четец на MSG структура на ниско ниво |