כיצד להתחיל עם Aspose.Email FOSS עבור Python
aspose-email-foss for Python הוא ספרייה חופשית, רישיון MIT ליצירת, קריאה וחיפוש. שינויי קבצים ו-CFB של Outlook - אין צורך ב- Microsoft Office, אין נולד תגיות: Python Pure Pythons.
מדריך שלב‑אחר‑שלב
שלב 1: התקנה של החבילה
התקנת PyPI עם pip:
pip install aspose-email-fossבדוק את ההתקנה הנכונה:
from aspose.email_foss.msg import MapiMessage
print("aspose-email-foss is ready.")שלב 2: ייצוא כיתות נדרשות
ייבוא המודולים הדרושים ליצירת הודעות, מיקומי תכונות ושינוי פורמט:
from datetime import datetime, timezone
from aspose.email_foss import msg
from aspose.email_foss.msg import MapiMessage, PropertyIdשלב 3: יצירת קובץ
שימוש MapiMessage.create() כדי ליצור הודעה עם נושא וגוף. הגדרת מטאנתטים של המשלוח עם PropertyId להוסיף קבועים, להוספת מקבלים ולהדביק קובץ.
message = MapiMessage.create("Getting Started", "Hello from aspose-email-foss!")
message.set_property(PropertyId.SENDER_NAME, "Build Agent")
message.set_property(PropertyId.SENDER_EMAIL_ADDRESS, "agent@example.com")
message.set_property(
PropertyId.MESSAGE_DELIVERY_TIME,
datetime(2026, 1, 1, 9, 0, tzinfo=timezone.utc),
)
message.add_recipient("alice@example.com", display_name="Alice Example")
message.add_attachment("notes.txt", b"Meeting notes go here.\n", mime_type="text/plain")
message.save("getting-started.msg")
print("getting-started.msg written.")שלב 4: קרא את הקובץ MSG בחזרה
להוריד את הקובץ המשמש MapiMessage.from_file() מנהל הקשר – Access to the subject ו body החזרת נכסים ישירות מהחומר המוחזר.
with MapiMessage.from_file("getting-started.msg") as message:
print(f"Subject: {message.subject}")
print(f"Body : {message.body}")שלב 5: הפוך את MSG ל EML
to_email_bytes() המאמר מתמקד בפורמט RFC 5322. כתוב את התוצאה ל א .eml קובץ עם הספרייה הסטנדרטית.
from pathlib import Path
with MapiMessage.from_file("getting-started.msg") as message:
Path("getting-started.eml").write_bytes(message.to_email_bytes())
print("getting-started.eml written.")בעיות נפוצות ותיקונים
ModuleNotFoundError: No module named 'aspose' החבילה אינה מותקנת בסביבה פייטון פעילה. pip install aspose-email-foss באותו סביבה וירטואלית שאתה משתמש כדי להפעיל את התסריט שלך. pip show aspose-email-foss.
FileNotFoundError כאשר מתקשר MapiMessage.from_file() הדרך שאתה עבר לא קיימת או משתמשת במפרט הלא נכון עבור מערכת ההפעלה שלך. pathlib.Path כדי לבנות מסלולים פורטליים: MapiMessage.from_file(Path("folder") / "file.msg").
קובץ MSG נפתח ב- Outlook אך אינו מציג נושא MapiMessage.create() תן את הנושא כמטרה ראשונה.אם אתה עבר כאשר מופיע המסר בשורת ריקה, Outlook מציג את ההודעה כלא מכותרת. באופן מפורש עם set_property(PropertyId.SUBJECT, "My Subject").
EML המרה מייצרת גוף ריק to_email_bytes() משתמשים body_html אם הוא נופל, והוא חוזר body.אישר כי ב לפחות אחד מהתכונות הללו אינו ריק לאחר טעינת MSG עם from_file().
תוכן Unicode במקבל או נושא הוא מנותק Pass → unicode_strings=True 2 MapiMessage.create() כדי להבטיח את רכוש המגבלות לא ניתן להוריד את התוכן ב- Unicode (PT_UNICODE) ולא ב ANSI (pt_STRING8).
שאלות נפוצות
האם Microsoft Office-Foss דורש את Microsoft?
הספרייה היא עצמאית לחלוטין.היא קוראת ומכתבת את הפורמטים הבינאריים MSG ו-CFB באופן מקורי ב-Python ללא כל תלות על Microsoft Office, אוטומציה COM או API של Win32.
האם ניתן להשתמש בספריה זו ב- Linux או macOS?
כן כן. aspose-email-foss הוא Python טהור ונוהג על כל פלטפורמה התומכת ב-Python 3.10 או מאוחר יותר – כולל Windows, macOS, Linux, Docker Containers ותכונות ללא שרת.
האם הספרייה חופשית לשימוש מסחרי?
ניתן להשתמש בו, לשנות אותו ולהפיץ אותו מחדש לכל מטרה, כולל יישומים מסחריים, ללא תשלום רישיון או דרישות הקצבה מעבר לטקסט של הרישיונות.
כיצד ניתן להוסיף מקבלים CC ו- BCC?
Pass → recipient_type=msg.RECIPIENT_TYPE_CC או msg.RECIPIENT_TYPE_BCC כמו השלישי טענות add_recipient():
message.add_recipient("bob@example.com", display_name="Bob", recipient_type=msg.RECIPIENT_TYPE_CC)איך אני מזין אחד בתוך השני?
שימוש MapiMessage.add_embedded_message_attachment(),עובר את הפנים MapiMessage התשובה הראשונה היא האמור:
inner = MapiMessage.create("Inner message", "Embedded body.")
outer = MapiMessage.create("Outer message", "See attachment.")
outer.add_embedded_message_attachment(inner, "inner.msg")
outer.save("outer.msg")