Gestion des éléments de calendrier dans les fichiers PST
Ajouter des événements de calendrier aux fichiers PST
Créer un nouveau fichier PST et ajouter des sous‑dossiers démontre comment créer un fichier PST et y inclure des sous‑dossiers. Avec Aspose.Email, vous pouvez également ajouter un MapiCalendar au sous‑dossier Calendrier d’un fichier PST existant ou nouvellement créé. Voici les étapes pour ajouter un MapiCalendar à un fichier PST :
- Créez un MapiCalendar objet.
- Définir les propriétés du MapiCalendar à l’aide d’un constructeur et de méthodes.
- Créez un PST en utilisant le PersonalStorage.create() méthode.
- Créez un dossier pré‑défini (Calendrier) à la racine du fichier PST en accédant au dossier racine puis en appelant la méthode add_mapi_message_item().
L’extrait de code suivant vous montre comment créer un MapiCalendar puis l’ajouter au dossier calendrier d’un fichier PST nouvellement créé :
Enregistrer les éléments du calendrier Outlook au format ICS
Cet article explique comment accéder aux éléments du calendrier d’un fichier PST Outlook et les enregistrer sur le disque au format ICS. Vous devrez utiliser le PersonalStorage et MapiCalendar classes pour récupérer les données du calendrier. Suivez ces étapes pour enregistrer les éléments du calendrier :
- Charger le fichier PST en utilisant le PersonalStorage classe.
- Naviguer vers le dossier Calendrier.
- Récupérer la collection de messages du dossier Calendrier.
- Parcourir la collection de messages.
- Utilisez le PersonalStorage.extract_message() méthode pour obtenir les informations de contact dans le MapiCalendar classe.
- Utilisez le MapiCalendar.save() méthode pour enregistrer chaque élément de calendrier sur le disque au format ICS.
Le programme ci‑dessous charge un fichier PST depuis le disque et enregistre tous les éléments de calendrier au format ICS. Ces fichiers ICS peuvent ensuite être utilisés dans n’importe quel autre programme qui prend en charge les fichiers de calendrier ICS standards. Lorsqu’il est ouvert dans Microsoft Outlook, un fichier ICS apparaît comme montré sur la capture d’écran ci‑dessous.
![]() |
|---|
L’extrait de code suivant montre comment exporter les éléments de calendrier d’un PST Outlook au format ICS :
Enregistrer les fichiers ICS avec les horodatages d’origine
La méthode keep_original_date_time_stamp de la MapiCalendarIcsSaveOptions classe permet de conserver les horodatages d’origine des éléments du calendrier lors de leur enregistrement au format ICS (iCalendar). L’exemple de code suivant démontre l’implémentation de cette méthode :
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)
Modifier ou supprimer des occurrences de récurrence dans les fichiers PST
Vous pouvez ajouter des exceptions aux modèles de récurrence existants ou supprimer des occurrences spécifiques dans les fichiers PST en utilisant l’API Aspose.Email pour .NET. L’exemple de code suivant montre comment effectuer ces modifications :
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)
