Hantera kalenderobjekt i PST-filer

Lägg till kalenderevenemang i PST-filer

Skapa ny PST-fil och lägg till undermappar demonstrerade hur man skapar en PST-fil och inkluderar undermappar i den. Med Aspose.Email kan du också lägga till en MapiCalendar i Kalender-undermappen i en befintlig eller ny skapad PST-fil. Nedan följer stegen för att lägga till en MapiCalendar i en PST-fil:

  1. Skapa en MapiCalendar objekt.
  2. Ställ in MapiCalendar-egenskaperna med en konstruktor och metoder.
  3. Skapa en PST med hjälp av PersonalStorage.create() metod.
  4. Skapa en fördefinierad mapp (Kalender) i rotkatalogen i PST-filen genom att komma åt rotmappen och sedan anropa add_mapi_message_item()-metoden.

Följande kodsnutt visar hur du skapar en MapiCalendar och sedan lägger till den i kalendermappen i en ny skapad PST-fil:

Spara Outlook-kalenderobjekt som ICS-filer

Denna artikel förklarar hur du kommer åt kalenderobjekt från en Outlook PST-fil och sparar dem på disk i ICS-format. Du kommer behöva använda PersonalStorage och MapiCalendar klasser för att hämta kalenderdata. Följ dessa steg för att spara kalenderobjekt:

  1. Ladda PST-filen med hjälp av PersonalStorage klass.
  2. Navigera till Kalender-mappen.
  3. Hämta meddelandesamlingen från Kalender-mappen.
  4. Loopa igenom meddelandesamlingen.
  5. Använd PersonalStorage.extract_message() metod för att hämta kontaktinformation i MapiCalendar klass.
  6. Använd MapiCalendar.save() metod för att spara varje kalenderobjekt på disk i ICS-format.

Programmet nedan laddar en PST-fil från disk och sparar alla kalenderobjekt i ICS-format. Dessa ICS-filer kan sedan användas i vilket annat program som helst som stöder standard-ICS-kalenderfiler. När en ICS-fil öppnas i Microsoft Outlook visas den som i skärmbilden nedan.

todo:image_alt_text

Följande kodsnutt demonstrerar hur du exporterar kalenderobjekt från en Outlook PST till ICS-format:

Spara ICS-filer med ursprungliga tidsstämplar

keep_original_date_time_stamp-metoden i MapiCalendarIcsSaveOptions klassen möjliggör att bevara de ursprungliga datum- och tidsstämplarna för kalenderobjekten när de sparas som en ICS‑ (iCalendar)‑fil. Följande kodexempel demonstrerar implementeringen av denna metod:

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)

Ändra eller ta bort återkommande förekomster i PST-filer

Du kan lägga till undantag för befintliga återkommandemönster eller ta bort specifika förekomster i PST-filer med Aspose.Email för .NET API. Följande kodexempel demonstrerar hur sådana förändringar kan göras:

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)