Arbeta med kalenderelement i PST‑fil

Lägga till MapiCalendar i PST

Skapa en ny PST-fil och lägg till undermappar visade hur du skapar en PST-fil och lägger till en undermapp i den. Med Aspose.Email kan du lägga till MapiCalendar i Calendar‑undermappen i en PST-fil som du har skapat eller läst in. Nedan följer stegen för att lägga till MapiCalendar i en PST:

  1. Skapa ett MapiCalendar-objekt.
  2. Ställ in MapiCalendar-egenskaperna med en konstruktor och metoder.
  3. Skapa en PST med metoden PersonalStorage.create().
  4. Skapa en fördefinierad mapp (Calendar) i rotmappen i PST-filen genom att öppna rotmappen och sedan anropa add_mapi_message_item()-metoden.

Följande kodexempel visar hur du skapar ett MapiCalendar och sedan lägger till det i kalendermappen i en nyupprättad PST-fil.

Spara kalenderobjekt från PST till disk i ICS-format

Denna artikel visar hur du kommer åt kalenderobjekt från en Outlook PST-fil och sparar kalendern på disk i ICS-format. Använd PersonalStorage- och MapiCalendar-klasserna för att hämta kalenderinformationen. Nedan följer stegen för att spara kalenderobjekt:

  1. Läs in PST-filen i PersonalStorage-klassen.
  2. Bläddra i Kalender‑mappen.
  3. Hämta innehållet i Kalender‑mappen för att få meddelandesamlingen.
  4. Loopa igenom meddelandesamlingen.
  5. Anropa PersonalStorage.extract_message()-metoden för att hämta kontaktinformationen i MapiCalendar-klassen.
  6. Anropa MapiCalendar.save()-metoden för att spara kalenderobjektet på disk i ICS-format.

Programmet nedan läser in en PST-fil från disk och sparar alla kalenderobjekt i ICS-format. ICS-filerna kan sedan användas i vilket annat program som helst som kan läsa den standardiserade ICS‑kalenderfilen. När en ICS-fil öppnas i Microsoft Outlook ser den ut som skärmdumpen nedan.

|todo:image_alt_text| | :- | Följande kodexempel visar hur du exporterar kalenderobjekt från Outlook PST till ICS-format.

Spara som ICS med original tidsstämpel

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/ta bort förekomster från återkomster

Undantag kan läggas till befintliga återkomster med Aspose.Email för .NET API. Följande kodexempel illustrerar hur funktionen används.

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)