Travailler avec les éléments du calendrier dans un fichier PST
Ajout de MapiCalendar au PST
Créer un nouveau fichier PST et ajouter des sous‑dossiers montre comment créer un fichier PST et y ajouter un sous‑dossier. Avec Aspose.Email vous pouvez ajouter un MapiCalendar au sous‑dossier Calendrier d’un fichier PST que vous avez créé ou chargé. Voici les étapes pour ajouter un MapiCalendar à un PST :
- Créer un objet MapiCalendar.
- Définir les propriétés du MapiCalendar à l’aide d’un constructeur et de méthodes.
- Créez un PST à l’aide de la méthode PersonalStorage.create().
- Créer 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 du PST sur le disque au format ICS
Cet article montre comment accéder aux éléments du calendrier d’un fichier PST Outlook et enregistrer le calendrier sur le disque au format ICS. Utilisez les classes PersonalStorage et MapiCalendar pour obtenir les informations du calendrier. Voici les étapes pour enregistrer les éléments du calendrier :
- Chargez le fichier PST dans la classe PersonalStorage.
- Parcourez le dossier Calendrier.
- Obtenez le contenu du dossier Calendrier pour récupérer la collection de messages.
- Parcourir la collection de messages.
- Appelez la méthode PersonalStorage.extract_message() pour obtenir les informations de contact dans la classe MapiCalendar.
- Appelez la méthode MapiCalendar.save() pour enregistrer l’élément du calendrier sur le disque au format ICS.
Le programme ci‑dessous charge un fichier PST depuis le disque et enregistre tous les éléments du calendrier au format ICS. Les fichiers ICS peuvent ensuite être utilisés dans tout autre programme capable de charger le fichier de calendrier standard ICS. Ouvert dans Microsoft Outlook, un fichier ICS ressemble à celui de la capture d’écran ci‑dessous.
|
| | :- | L’extrait de code suivant vous montre comment exporter les éléments du calendrier d’Outlook PST au format ICS.
Enregistrement en tant que ICS avec horodatage 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/Supprimer des occurrences d’événements récurrents
Des exceptions peuvent être ajoutées aux récurrences existantes à l’aide de l’API Aspose.Email pour .NET. L’exemple de code suivant illustre l’utilisation de cette fonctionnalité.
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)