Introduction
Aspose.Email FOSS for Python is a free, MIT-licensed library for creating, reading, and Outlook uyumlu mesaj dosyalarını saf Python’a dönüştürmek.PyPI’de mevcuttur aspose-email-foss,Windows, macOS, Linux, Docker ve sunucusuz ortamlarda çalışır. Microsoft Office bağımlılığı ve mülkiyet çalışma süresi yoktur.
Kütüphane iki ana alanı kapsar: yüksek düzeyde MAPI katmanı (MapiMessage) Çalışmak için Mesaj konusu, organları, alıcıları ve eklentileri ile; ve düşük düzeyde bir yapı Yüzey (MsgReader, CFBReader, CFBStorage, CFBStream• Yakıt bileşikini ortaya çıkarır. Herhangi bir dosya biner konteynerleri destekler .msg Dosya için.
Bu makale, 26.3 sürümünde gönderilen anahtar özellikleri, API yüzeyinde yerleştirilmiştir.
Ana Özellikler
MapiMessage ile Yüksek Seviye Mesaj Oluşturma
MapiMessage Outlook uyumlu mesajlar oluşturmak için ana giriş noktasıdır. Sırp - Çağrı MapiMessage.create() Bir konu ve bir vücut ile, alıcıları ekleyin ve Yüzükler, sonra doğrudan bir .msg Dosya için.
from aspose.email_foss import msg
message = msg.MapiMessage.create(
"Quarterly status update",
"Hello team,\n\nPlease review the attached summary.\n\nRegards,\nEngineering",
)
message.set_property(msg.PropertyId.SENDER_NAME, "Build Agent")
message.set_property(msg.PropertyId.SENDER_EMAIL_ADDRESS, "agent@example.com")
message.add_recipient("alice@example.com", display_name="Alice Example")
message.add_recipient(
"carol@example.com",
display_name="Carol Example",
recipient_type=msg.RECIPIENT_TYPE_CC,
)
message.add_attachment("report.txt", b"Summary content here.\n", mime_type="text/plain")
message.save("output.msg")
MSG Dosyalarını Okumak ve Denetlemek
MsgReader mevcut bir sistemin yapılandırılmış erişimini sağlar. .msg dosyayı tam yüklemeden A’ya girer MapiMessage.• Top seviyeli mülk girişleri, alıcı depoları ve yapıştırıcılar bireysel olarak depolamaktadır, büyük dosya denetimleri için pratik hale getirir ve Validasyon boru hattı.
with msg.MsgReader.from_file(“output.msg”) as reader: header = reader.top_level_header print(f"Recipients : {header.recipient_count}") print(f"Attachments: {header.attachment_count}")
for entry in reader.iter_recipient_storages():
_, props = reader.parse_subobject_property_stream(entry.stream_id)
print(f" Recipient storage {entry.name}: {len(props)} property entries")
```python
from aspose.email_foss import msg
with msg.MsgReader.from_file("output.msg") as reader:
header = reader.top_level_header
print(f"Recipients : {header.recipient_count}")
print(f"Attachments: {header.attachment_count}")
for entry in reader.iter_recipient_storages():
_, props = reader.parse_subobject_property_stream(entry.stream_id)
print(f" Recipient storage {entry.name}: {len(props)} property entries")
MSG Round-Trip: Yükleme, Değiştirme ve Kaydetme
Because MapiMessage Destek from_file() Yükleme ve save() Yazmak için, bir tam Okuma-değiştirme-yazma döngüsü sadece birkaç satır gerektirir. isimli özellikler, yazılı enumlar ve Unicode string işleme aracılığıyla mevcuttur. set_property, PropertyId,ve MapiNamedProperty.
with msg.MapiMessage.from_file(“original.msg”) as message: message.set_property(msg.PropertyId.SUBJECT, “Updated Subject”) message.save(“updated.msg”)
```python
from aspose.email_foss import msg
with msg.MapiMessage.from_file("original.msg") as message:
message.set_property(msg.PropertyId.SUBJECT, "Updated Subject")
message.save("updated.msg")
EML / RFC 5322 Dönüşüm
MapiMessage.to_email_message() yüklü bir MSG’yi standart Python’a dönüştürür email.message.EmailMessage RFC 5322’ye ihraç edilebilir. .eml Format Kullanımı Kayıtlı Kitap (Kayıtlar)MapiMessage.from_email_message()• Yapılandırma A MapiMessage Birden birinden EmailMessage.
from pathlib import Path
from aspose.email_foss import msg
with msg.MapiMessage.from_file("message.msg") as message:
eml_bytes = message.to_email_bytes()
Path("message.eml").write_bytes(eml_bytes)
# Reverse: load EML into MapiMessage
import email
raw_eml = Path("message.eml").read_bytes()
email_obj = email.message_from_bytes(raw_eml)
mapi = msg.MapiMessage.from_email_message(email_obj)
mapi.save("from_eml.msg")
CFB Konteyner Yolculuğu
Every .msg Dosya bir kombine dosya biner (CFB) konteyneridir. CFBReader sağlar sadece okuma-sadece giriş dizin ağacı, listeler ve akışlar izin vermek, yürüyüş hierarşiye ve ham akım byte çıkarmak - güvenmeden MsgReader.
from aspose.email_foss.cfb import CFBReader
with CFBReader.from_file("message.msg") as reader:
print(f"CFB version : {reader.major_version}")
print(f"Sector size : {reader.sector_size}")
for depth, entry in reader.iter_tree():
indent = " " * depth
size = entry.stream_size if entry.is_stream() else "-"
print(f"{indent}{entry.name} [size={size}]")
Aracı İşlemleri
Ekler ekleyin yoluyla MapiMessage.add_attachment() (İnternet Bilgileri için) veya MapiMessage.add_embedded_message_attachment() (MHP’nin bu iki yöntemi de kullanması için) Bir fil adı, ham byte ve seçmeli bir MIME tipi kabul edin.
message = msg.MapiMessage.create(“Attachment demo”, “See files below.”) message.add_attachment(“data.csv”, b"id,value\n1,100\n", mime_type=“text/csv”)
inner = msg.MapiMessage.create(“Nested message”, “This is embedded.”) message.add_embedded_message_attachment(inner, “nested.msg”) message.save(“with_attachments.msg”)
---
```python
from aspose.email_foss import msg
message = msg.MapiMessage.create("Attachment demo", "See files below.")
message.add_attachment("data.csv", b"id,value\n1,100\n", mime_type="text/csv")
inner = msg.MapiMessage.create("Nested message", "This is embedded.")
message.add_embedded_message_attachment(inner, "nested.msg")
message.save("with_attachments.msg")
Hızlı Başlangıç
pip install aspose-email-fossCreate and save a minimal MSG
message = msg.MapiMessage.create(“Hello World”, “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”)
Load it back and convert to EML
with msg.MapiMessage.from_file(“hello.msg”) as loaded: print(loaded.get_property_value(msg.PropertyId.SUBJECT)) eml = loaded.to_email_bytes() open(“hello.eml”, “wb”).write(eml)
---
```bash
pip install aspose-email-foss>=26.3
from aspose.email_foss import msg
# Create and save a minimal MSG
message = msg.MapiMessage.create("Hello World", "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")
# Load it back and convert to EML
with msg.MapiMessage.from_file("hello.msg") as loaded:
print(loaded.get_property_value(msg.PropertyId.SUBJECT))
eml = loaded.to_email_bytes()
open("hello.eml", "wb").write(eml)
Desteklenen Formatlar
| Format | Extension | Read | Write |
|---|---|---|---|
| Binary Dosya Yapılandırma | .cfb | ✓ | ✓ |
| Outlook Mesajları | .msg | ✓ | ✓ |
| EML / RFC 5322 | .eml | ✓ | ✓ |
Açık Kaynak & Lisans
Aspose.Email FOSS for Python is released under the MIT License. The source repository is mevcuttur github.com/aspose-email-foss için tıklayınız ve The Piyasada yayınlanan paket, aspose-email-foss.• Ticari kullanım, değişiklik ve Tüm yeniden dağıtım MIT şartları altında izin verilir.