إدارة عناصر التقويم في ملفات PST
إضافة أحداث التقويم إلى ملفات PST
إنشاء ملف PST جديد وإضافة مجلدات فرعية أظهر كيفية إنشاء ملف PST وإضافة مجلدات فرعية داخله. باستخدام Aspose.Email، يمكنك أيضًا إضافة MapiCalendar إلى المجلد الفرعي Calendar في ملف PST موجود أو تم إنشاؤه حديثًا. إليك الخطوات لإضافة MapiCalendar إلى ملف PST:
- إنشاء MapiCalendar الكائن.
- عيّن خصائص MapiCalendar باستخدام مُنشئ وطرق.
- إنشاء PST باستخدام الـ PersonalStorage.create() طريقة.
- أنشئ مجلدًا محددًا مسبقًا (Calendar) في الجذر الخاص بملف PST عن طريق الوصول إلى المجلد الجذر ثم استدعاء طريقة add_mapi_message_item().
يعرض مقطع الشيفرة التالي كيفية إنشاء MapiCalendar ثم إضافته إلى مجلد التقويم في ملف PST تم إنشاؤه حديثًا:
حفظ عناصر تقويم Outlook كملفات ICS
تشرح هذه المقالة كيفية الوصول إلى عناصر التقويم من ملف Outlook PST وحفظها على القرص بصيغة ICS. ستحتاج إلى استخدام PersonalStorage و MapiCalendar الفئات لاسترجاع بيانات التقويم. اتبع هذه الخطوات لحفظ عناصر التقويم:
- تحميل ملف PST باستخدام PersonalStorage فئة.
- الانتقال إلى مجلد التقويم.
- استرجاع مجموعة الرسائل من مجلد التقويم.
- تكرار عبر مجموعة الرسائل.
- استخدم الـ PersonalStorage.extract_message() طريقة للحصول على معلومات جهة الاتصال في MapiCalendar فئة.
- استخدم الـ MapiCalendar.save() طريقة لحفظ كل عنصر تقويم على القرص بصيغة ICS.
يقوم البرنامج أدناه بتحميل ملف PST من القرص وحفظ جميع عناصر التقويم بصيغة ICS. يمكن بعد ذلك استخدام ملفات 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)
تعديل أو حذف تكرارات المتكررة في ملفات PST
يمكنك إضافة استثناءات إلى نمط التكرار الحالي أو حذف تكرارات محددة في ملفات PST باستخدام 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)
