PST फ़ाइलों में कैलेंडर आइटम्स का प्रबंधन

Add Calendar Events to PST Files

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

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

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

Save Outlook Calendar Items as ICS Files

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

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

नीचे दिया गया प्रोग्राम डिस्क से PST फ़ाइल लोड करता है और सभी कैलेंडर आइटम को ICS फ़ॉर्मेट में सहेजता है। इन ICE फ़ाइलों को फिर किसी भी अन्य प्रोग्राम में उपयोग किया जा सकता है जो मानक ICE कैलेंडर फ़ाइलों को समर्थन देता है। जब Microsoft Outlook में खोलते हैं, तो एक ICE फ़ाइल नीचे स्क्रीनशॉट में दिखाए अनुसार दिखती है।

todo:image_alt_text

निम्नलिखित कोड स्निपेट दर्शाता है कि कैसे Outlook PST से कैलेंडर आइटम को ICS फ़ॉर्मेट में एक्सपोर्ट करें:

Save ICS Files with Original Timestamps

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)

Modify or Delete Recurrence Occurrences in PST Files

आप Aspose.Email for .NET API का उपयोग करके PST फ़ाइलों में मौजूदा आवर्ती पैटर्न में अपवाद जोड़ सकते हैं या विशिष्ट घटनाओं को हटाकर सकते हैं। निम्नलिखित कोड उदाहरण दर्शाता है कि ऐसी संशोधन कैसे करें:

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)