مدیریت آیتم‌های تقویم در فایل‌های PST

افزودن رویدادهای تقویم به فایل‌های PST

ایجاد فایل PST جدید و افزودن زیرپوشه‌ها نشان داد چگونه یک فایل PST ایجاد کرده و زیرپوشه‌هایی در آن اضافه کنید. با Aspose.Email می‌توانید یک MapiCalendar را به زیرپوشه Calendar یک فایل PST موجود یا تازه‌ساخته اضافه کنید. در ادامه مراحل افزودن MapiCalendar به یک فایل PST آورده شده است:

  1. ایجاد یک MapiCalendar شیء.
  2. ویژگی‌های MapiCalendar را با استفاده از سازنده و متدها تنظیم کنید.
  3. ایجاد یک PST با استفاده از PersonalStorage.create() متد.
  4. یک پوشه پیش‌تعریف‌شده (Calendar) را در ریشهٔ فایل PST ایجاد کنید با دسترسی به پوشه ریشه و سپس فراخوانی متد add_mapi_message_item().

کد زیر نشان می‌دهد چگونه یک MapiCalendar ایجاد کنید و سپس آن را به پوشه تقویم یک فایل PST تازه‌ساخته اضافه کنید:

ذخیره موارد تقویم Outlook به عنوان فایل‌های ICS

این مقاله توضیح می‌دهد چگونه به موارد تقویم از یک فایل PST Outlook دسترسی پیدا کنید و آنها را به دیسک در فرمت ICS ذخیره کنید. شما نیاز دارید از PersonalStorage و MapiCalendar کلاس‌ها برای بازیابی داده‌های تقویم. این مراحل را برای ذخیره موارد تقویم دنبال کنید:

  1. بارگذاری فایل PST با استفاده از PersonalStorage کلاس.
  2. رفتن به پوشه Calendar.
  3. دریافت مجموعه پیام‌ها از پوشه Calendar.
  4. حلقه‌زدن در مجموعه پیام‌ها.
  5. از PersonalStorage.extract_message() روش برای دریافت اطلاعات مخاطب در MapiCalendar کلاس.
  6. از MapiCalendar.save() روش برای ذخیره هر مورد تقویم در دیسک به فرمت ICS.

برنامه زیر یک فایل PST را از دیسک بارگذاری می‌کند و تمام موارد تقویم را در فرمت ICS ذخیره می‌کند. این فایل‌های ICS سپس می‌توانند در هر برنامهٔ دیگری که از فایل‌های تقویم استاندارد ICS پشتیبانی می‌کند استفاده شوند. وقتی در Microsoft Outlook باز می‌شود، یک فایل ICS همان‌گونه که در تصویر زیر نشان داده شده است ظاهر می‌شود.

todo:image_alt_text

کد زیر نشان می‌دهد چگونه موارد تقویم را از یک 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 API حذف کنید. نمونه کد زیر نشان می‌دهد چگونه این تغییرات را اعمال کنید:

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)