Werken met agenda‑items in PST‑bestand

MapiCalendar toevoegen aan PST

Create a New PST File and Add Subfolders liet zien hoe u een PST‑bestand maakt en er een submap aan toevoegt. Met Aspose.Email kunt u een MapiCalendar toevoegen aan de Calendar‑submap van een PST‑bestand dat u hebt aangemaakt of geladen. Hieronder staan de stappen om een MapiCalendar aan een PST toe te voegen:

  1. Maak een MapiCalendar‑object.
  2. Stel de MapiCalendar‑eigenschappen in met behulp van een constructor en methoden.
  3. Maak een PST aan met de PersonalStorage.create()-methode.
  4. Maak een vooraf gedefinieerde map (Calendar) aan in de root van het PST‑bestand door de root‑map te benaderen en vervolgens de methode add_mapi_message_item() aan te roepen.

Het volgende codefragment toont hoe u een MapiCalendar maakt en vervolgens toevoegt aan de agenda‑map van een nieuw aangemaakt PST‑bestand.

Agenda‑items opslaan vanuit PST op schijf in ICS‑formaat

Dit artikel laat zien hoe u agenda‑items uit een Outlook‑PST‑bestand kunt benaderen en de agenda op schijf kunt opslaan in ICS‑formaat. Gebruik de PersonalStorage‑ en MapiCalendar‑klassen om de agenda‑informatie te verkrijgen. Hieronder staan de stappen om agenda‑items op te slaan:

  1. Laad het PST‑bestand in de PersonalStorage‑klasse.
  2. Blader door de agenda‑map.
  3. Haal de inhoud van de agenda‑map op om de berichtcollectie te verkrijgen.
  4. Loop door de berichtenverzameling.
  5. Roep de methode PersonalStorage.extract_message() aan om de contactinformatie te verkrijgen in de MapiCalendar‑klasse.
  6. Roep de methode MapiCalendar.save() aan om het agenda‑item op schijf op te slaan in ICS‑formaat.

Het onderstaande programma laadt een PST‑bestand van de schijf en slaat alle agenda‑items op in ICS‑formaat. De ICS‑bestanden kunnen vervolgens in elk ander programma worden gebruikt dat het standaard ICS‑agenda‑bestand kan laden. Geopend in Microsoft Outlook, ziet een ICS‑bestand eruit zoals in de onderstaande schermafbeelding.

|todo:image_alt_text| | :- | Het volgende codefragment laat zien hoe u agenda‑items uit Outlook PST exporteert naar ICS‑formaat.

Opslaan als ICS met oorspronkelijke tijdstempel

De keep_original_date_time_stamp-methode van de MapiCalendarIcsSaveOptions klasse maakt het mogelijk om de oorspronkelijke datum‑ en tijdstempels van de agenda‑items te behouden bij het opslaan als een ICS (iCalendar)‑bestand. Het volgende codevoorbeeld toont de implementatie van deze methode:

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)

Aanpassen/Verwijderen van herhalingen uit terugkerende afspraken

Uitzonderingen kunnen worden toegevoegd aan bestaande herhalingen met behulp van de Aspose.Email voor .NET‑API. Het volgende codevoorbeeld illustreert het gebruik van deze functionaliteit.

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)