עבודה עם פריטי יומן בקובץ PST
הוספת MapiCalendar ל‑PST
יצירת קובץ PST חדש והוספת תיקיות משנה הראה כיצד ליצור קובץ PST ולהוסיף לו תיקיית משנה. עם Aspose.Email ניתן להוסיף MapiCalendar לתיקיית Calendar של קובץ PST שיצרת או טענת. להלן הצעדים להוספת MapiCalendar ל‑PST:
- צור אובייקט MapiCalendar.
- הגדר את תכונות MapiCalendar באמצעות בנאי ומתודות.
- צור קובץ PST בעזרת שיטת PersonalStorage.create().
- צור תיקייה מוגדרת מראש (Calendar) בשורש קובץ ה‑PST על‑ידי גישה לתיקיית השורש ולאחר מכן קריאה למתודה add_mapi_message_item().
קטע הקוד הבא מראה כיצד ליצור MapiCalendar ולאחר מכן להוסיף אותו לתיקיית היומן של קובץ PST שנוצר זה עתה.
שמירת פריטי יומן מקובץ PST לדיסק בפורמט ICS
מאמר זה מציג כיצד לגשת לפריטי יומן מקובץ Outlook PST ולשמור את היומן לדיסק בפורמט ICS. השתמש במחלקות PersonalStorage ו‑MapiCalendar כדי לקבל את מידע היומן. להלן הצעדים לשמירת פריטי היומן:
- טען את קובץ ה‑PST במחלקת PersonalStorage.
- עיון בתיקיית היומן.
- קבל את תוכן תיקיית היומן כדי לקבל את אוסף ההודעות.
- עבור על איסוף ההודעות.
- הפעל את המתודה PersonalStorage.extract_message() כדי לקבל את מידע הקשר במחלקת MapiCalendar.
- הפעל את המתודה MapiCalendar.save() כדי לשמור את פריט היומן לדיסק בפורמט ICS.
התוכנית שלמטה טוענת קובץ PST מהדיסק ושומרת את כל פריטי היומן בפורמט ICS. קבצי ה‑ICS יכולים לאחר מכן לשמש בכל תוכנה אחרת שמסוגלת לטעון קובץ יומן סטנדרטי בפורמט זה. כאשר נפתח קובץ ICS ב‑Microsoft Outlook, הוא נראה כמו בתצלום המסך שלהלן.
|
| | :- | הקטע הקוד הבא מראה כיצד לייצא פריטי יומן מ‑Outlook PST לפורמט ICS.
שמירה כ-ICS עם חותמת זמן מקורית
מתודת keep_original_date_time_stamp של MapiCalendarIcsSaveOptions מחלקה מאפשרת לשמור על חותמות התאריך והשעה המקוריות של פריטי היומן בעת שמירתם כקובץ ICS (iCalendar). דוגמת הקוד הבאה מציגה את מימוש המתודה הזו:
import aspose.email as ae
pst = ae.storage.pst.PersonalStorage.from_file("my.pst")
calendar_folder = pst.get_predefined_folder(ae.storage.pst.StandardIpmFolder.APPOINTMENTS)
for msg_info in calendar_folder.enumerate_messages():
cal = pst.extract_message(msg_info).to_mapi_message_item()
save_options = ae.mapi.MapiCalendarIcsSaveOptions()
save_options.keep_original_date_time_stamp = True
if not (cal is None):
cal.save("cal.ics", save_options)
שינוי/מחיקת מופעים מרצפים
ניתן להוסיף חריגות למחזוריות קיימות באמצעות API של Aspose.Email עבור .NET. דוגמת הקוד הבאה מדגימה את השימוש בתכונה זו.
from datetime import datetime, timedelta
from aspose.email.storage.pst import PersonalStorage, StandardIpmFolder, FileFormatVersion
from aspose.email.mapi import MapiCalendar, MapiCalendarEventRecurrence, \
MapiCalendarDailyRecurrencePattern, MapiCalendarRecurrenceEndType, \
MapiCalendarExceptionInfo, MapiCalendarRecurrencePatternType, \
MapiRecipientCollection, MapiRecipientType
start_date = datetime.now().date()
recurrence = MapiCalendarEventRecurrence()
pattern = MapiCalendarDailyRecurrencePattern()
pattern.pattern_type = MapiCalendarRecurrencePatternType.DAY
pattern.period = 1
pattern.end_type = MapiCalendarRecurrenceEndType.NEVER_END
recurrence.recurrence_pattern = pattern
exception_date = start_date + timedelta(days=1)
# adding one exception
exception_info = MapiCalendarExceptionInfo()
exception_info.location = "London"
exception_info.subject = "Subj"
exception_info.original_start_date = exception_date
exception_info.start_date_time = exception_date
exception_info.end_date_time = exception_date + timedelta(hours=5)
pattern.exceptions.append(exception_info)
pattern.modified_instance_dates.append(exception_date)
# every modified instance also has to have an entry in the DeletedInstanceDates field with the original instance date.
pattern.deleted_instance_dates.append(exception_date)
# adding one deleted instance
pattern.deleted_instance_dates.append(exception_date + timedelta(days=2))
rec_coll = MapiRecipientCollection()
rec_coll.add("receiver@domain.com", "receiver", MapiRecipientType.TO)
new_cal = MapiCalendar(
"This is Location",
"This is Summary",
"This is recurrence test",
start_date,
start_date + timedelta(hours=3),
"organizer@domain.com",
rec_coll
)
new_cal.recurrence = recurrence
with PersonalStorage.create("output.pst", FileFormatVersion.UNICODE) as pst:
calendar_folder = pst.create_predefined_folder("Calendar", StandardIpmFolder.APPOINTMENTS)
calendar_folder.add_message(new_cal)