Agenda‑items beheren in PST‑bestanden

Voeg agenda‑events toe aan PST‑bestanden

Maak nieuw PST‑bestand en voeg submappen toe toonde aan hoe een PST‑bestand te maken en er submappen in op te nemen. Met Aspose.Email kun je ook een MapiCalendar toevoegen aan de submap Calendar van een bestaand of nieuw aangemaakt PST‑bestand. Hieronder staan de stappen om een MapiCalendar toe te voegen aan een PST‑bestand:

  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 de root van het PST‑bestand door de root‑map te benaderen en vervolgens de add_mapi_message_item()‑methode aan te roepen.

Het volgende codefragment toont hoe je een MapiCalendar maakt en vervolgens toevoegt aan de map Kalender van een nieuw aangemaakt PST‑bestand:

Sla Outlook‑agenda‑items op als ICS‑bestanden

Dit artikel legt uit hoe je agenda‑items uit een Outlook‑PST‑bestand kunt benaderen en opslaan op schijf in ICS‑formaat. Je moet de PersonalStorage en MapiCalendar klassen om de agenda‑gegevens op te halen. Volg deze stappen om agenda‑items op te slaan:

  1. Laad het PST‑bestand met behulp van de PersonalStorage klasse.
  2. Navigeer naar de map Kalender.
  3. Haal de berichtcollectie op uit de map Kalender.
  4. Loop door de berichtenverzameling.
  5. Gebruik de PersonalStorage.extract_message() methode om contactinformatie te verkrijgen in de MapiCalendar klasse.
  6. Gebruik de MapiCalendar.save() methode om elk agenda‑item op schijf op te slaan in ICS‑formaat.

Het programma hieronder laadt een PST‑bestand van schijf en slaat alle agenda‑items op in ICS‑formaat. Deze ICS‑bestanden kunnen vervolgens in elk ander programma worden gebruikt dat standaard ICS‑agenda‑bestanden ondersteunt. Wanneer geopend in Microsoft Outlook, ziet een ICS‑bestand eruit zoals in de onderstaande screenshot.

todo:image_alt_text

Het volgende codefragment laat zien hoe je agenda‑items exporteert vanuit een Outlook‑PST naar ICS‑formaat:

Sla ICS‑bestanden op met originele tijdstempels

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)

Wijzig of verwijder terugkeer‑gebeurtenissen in PST‑bestanden

Je kunt uitzonderingen toevoegen aan bestaande terugkeer‑patronen of specifieke gebeurtenissen verwijderen in PST‑bestanden met de Aspose.Email voor .NET‑API. Het volgende codevoorbeeld toont hoe je dergelijke aanpassingen maakt:

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)