יצירת ארגון קבצי PST בפייתון
יצירת קובץ PST חדש והוספת תתי‑תיקיות
Aspose.Email מספקת את הפונקציונליות ליצירת קבצי Personal Storage Table (PST) מאפס ולהוסיף להם תתי‑תיקיות. עם ה‑ PersonalStorage מחלקה, המאפשרת לנהל פעולות הקשורות לקבצי PST, שמאחסנים הודעות אימייל, אירועי לוח שנה, אנשי קשר ונתונים נוספים.
דוגמת הקוד שלהלן מציגה כיצד ליצור קובץ אחסון חדש ולהוסיף אליו תיקיית "Inbox":
- השתמש ב- PersonalStorage.create שיטה ליצירת קובץ PST חדש בתיקייה המוגדרת. הקובץ נוצר בעזרת
UNICODEפורמט לתאימות עם יישומים מודרניים. - גש לתיקיית השורש של קובץ PST והוסף תת‑תיקייה חדשה בשם "Inbox" לארגון הודעות האימייל.
בדיקת התאמת מחלקת מכולה
Aspose.Email for Python מציעה פתרון המשפר את תהליך האימות בעת יצירת תיקיות בקבצי PST. עם המאפיין enforce_container_class_matching של ה‑ FolderCreationOptions מחלקה, שמאפשרת להבטיח התאמה קפדנית של מחלקות המכולה כאשר מוסיפים תיקייה חדשה לאחסון PST. תכונה זו מסייעת לשמור על היררכיית הארגון בקובץ PST על ידי מניעת חוסר התאמה במחלקות המכולה. בהגדרת ‘EnforceContainerClassMatching’ ל‑’true’, תיזרק חריגה אם מחלקות המכולה של תיקיית האב והילד אינן תואמות, מה שמספק הגנה מפני מבני תיקיות שגויים. ברירת המחדל של מאפיין זה היא ‘false’, המאפשרת גמישות ביצירת תיקיות תוך אפשרות לאכוף התאמת מחלקת מכולה קפדנית בעת הצורך.
דוגמת הקוד שלהלן ממחישה את השימוש במאפיין enforce_container_class_matching כדי לשלוט האם יש לזרוק חריגה בעת הוספת תיקיות עם מחלקות מכולה שלא תואמות:
with PersonalStorage.create("storage.pst", FileFormatVersion.Unicode) as pst:
contacts = pst.createpredefinedfolder("Contacts", StandardIpmFolder.Contacts)
# An exception will not arise. EnforceContainerClassMatching is False by default.
contacts.addsubfolder("Subfolder1", "IPF.Note")
# An exception will occur as the container class of the subfolder being added (IPF.Note)
# does not match the container class of the parent folder (IPF.Contact).
contacts.addsubfolder("Subfolder3", FolderCreationOptions(enforcecontainerclassmatching=True, containerclass="IPF.Note"))
שינוי מחלקת מכולת התיקייה
לפעמים נדרש לשנות את מחלקת התיקייה. דוגמה נפוצה היא כאשר הודעות מסוגים שונים (פגישות, הודעות, וכו’) מתווספות לאותה תיקייה. במקרים כאלה, יש צורך לשנות את מחלקת התיקייה לכל האלמנטים כדי שיוצגו כראוי. קטע הקוד שלהלן מציג כיצד לשנות את מחלקת המכולה של תיקייה ב‑PST לצורך זה:
הוספת הודעות במצב הצטברות עם ביצועים משופרים
הוספת הודעות גורפות לקובץ PST במקום להוסיף אותן בנפרד יכולה להביא למספר יתרונות, במיוחד מבחינת יעילות וביצועים: פחות פעולות קלט/פלט, זמן הקצא משופר, משאבי מערכת מנוצלים בצורה יעילה יותר, ועוד. השיטה add_messages של ה‑ FolderInfo המחלקה משמשת להעברת אוסף הודעות MAPI שהושגו מתיקיית המקור לתיקיית היעד.
הוספת הודעות מ‑PST אחר
להצהיר ולקבל את כל הודעות MAPI מתיקיית המקור של קובץ PST, השתמשו בשיטה enumerate_mapi_messages() של ה‑ FolderInfo מחלקה. לאחר מכן, הוסף הודעות אלו לתיקיית היעד של קובץ PST אחר.
import aspose.email as ae
src_pst = ae.storage.pst.PersonalStorage.from_file("source.pst", False)
dest_pst = ae.storage.pst.PersonalStorage.from_file("destination.pst")
# Get the folder by name
src_folder = src_pst.root_folder.get_sub_folder("SomeFolder")
dest_folder = dest_pst.root_folder.get_sub_folder("SomeFolder")
dest_folder.add_messages(src_folder.enumerate_mapi_messages())
הוספת הודעות מספרייה
כדי להוסיף הודעות מתיקייה, לאחר פתיחת הקובץ וקבלת הפנייה לתיקייה ספציפית בתוך קובץ PST, השיגו רשימת שמות קבצים מתיקייה המוגדרת על‑ידי המשתנה "path" וצורו רשימת MSG ריקה לטעון כל קובץ כ‑MapiMessage. הוסיפו כל הודעה טעונה ל‑msg_list. דוגמת הקוד למטה מדגימה את תהליך הוספת הודעות מתיקייה:
import aspose.email as ae
import os
pst = ae.storage.pst.PersonalStorage.from_file("my.pst", False)
# Get the folder by name
folder = pst.root_folder.get_sub_folder("SomeFolder")
dirs = os.listdir("path")
msg_list = []
for file in dirs:
msg = ae.mapi.MapiMessage.load(file)
msg_list.append(msg)
folder.add_messages(iter(msg_list))