PST फ़ाइल में कैलेंडर आइटम्स के साथ काम करना

PST में MapiCalendar जोड़ना

नया PST फ़ाइल बनाना और सबफ़ोल्डर जोड़ना दर्शाता है कि PST फ़ाइल कैसे बनाई जाए और उसमें एक सबफ़ोल्डर कैसे जोड़ा जाए। Aspose.Email के साथ आप बनाई या लोड की गई PST फ़ाइल के Calendar सबफ़ोल्डर में MapiCalendar जोड़ सकते हैं। नीचे PST में MapiCalendar जोड़ने के चरण दिए गये हैं:

  1. एक MapiCalendar ऑब्जेक्ट बनाएं।
  2. कन्स्ट्रक्टर और मेथड्स का उपयोग करके MapiCalendar प्रॉपर्टीज़ सेट करें।
  3. PersonalStorage.create() मेथड का उपयोग करके PST बनाएं।
  4. रूट फ़ोल्डर तक पहुँचकर और फिर add_mapi_message_item() मेथड को कॉल करके PST फ़ाइल की जड़ (रूट) पर एक पूर्व-परिभाषित फ़ोल्डर (Calendar) बनाएं।

नीचे दिया गया कोड स्निपेट दिखाता है कि MapiCalendar कैसे बनाया जाए और फिर इसे नवीन निर्मित PST फ़ाइल के calendar फ़ोल्डर में कैसे जोड़ा जाए।

PST से कैलेंडर आइटम्स को डिस्क पर ICS फ़ॉर्मेट में सहेजें

यह लेख दर्शाता है कि Outlook PST फ़ाइल से कैलेंडर आइटम्स को कैसे एक्सेस किया जाए और कैलेंडर को डिस्क पर ICS फ़ॉर्मेट में कैसे सहेजा जाए। कैलेंडर जानकारी प्राप्त करने के लिए PersonalStorage और MapiCalendar क्लासेस का उपयोग करें। कैलेंडर आइटम्स को सहेजने के चरण इस प्रकार हैं:

  1. PersonalStorage क्लास में PST फ़ाइल को लोड करें।
  2. Calendar फ़ोल्डर को ब्राउज़ करें।
  3. Message संग्रह प्राप्त करने के लिए Calendar फ़ोल्डर की सामग्री प्राप्त करें।
  4. संदेश संग्रह के माध्यम से लूप करें।
  5. MapiCalendar क्लास में संपर्क जानकारी प्राप्त करने के लिए PersonalStorage.extract_message() मेथड को कॉल करें।
  6. कैलेंडर आइटम को डिस्क पर ICS फ़ॉर्मेट में सहेजने के लिए MapiCalendar.save() मेथड को कॉल करें।

नीचे दिया गया प्रोग्राम डिस्क से 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)

पुनरावृत्तियों से घटनाओं को संशोधित/हटाएँ

Aspose.Email for .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)