Arbeiten mit Kalender‑Einträgen in PST-Datei
Hinzufügen von MapiCalendar zu PST
Erstellen einer neuen PST‑Datei und Hinzufügen von Unterordnern zeigte, wie Sie eine PST‑Datei erstellen und einen Unterordner hinzufügen. Mit Aspose.Email können Sie MapiCalendar zum Calendar‑Unterordner einer von Ihnen erstellten oder geladenen PST‑Datei hinzufügen. Nachfolgend die Schritte zum Hinzufügen von MapiCalendar zu einer PST:
- Ein MapiCalendar‑Objekt erstellen.
- Setzen Sie die Eigenschaften von MapiCalendar mithilfe eines Konstruktors und Methoden.
- Erstellen Sie eine PST mit der Methode PersonalStorage.create().
- Erstellen Sie einen vordefinierten Ordner (Calendar) im Stammverzeichnis der PST‑Datei, indem Sie den Stammordner aufrufen und dann die Methode add_mapi_message_item() verwenden.
Das folgende Code‑Snippet zeigt, wie Sie einen MapiCalendar erstellen und ihn anschließend dem Kalender‑Ordner einer neu erstellten PST‑Datei hinzufügen.
Kalender‑Einträge aus PST auf dem Datenträger im ICS‑Format speichern
Dieser Artikel zeigt, wie Sie Kalender‑Einträge aus einer Outlook‑PST‑Datei abrufen und den Kalender im ICS‑Format auf dem Datenträger speichern. Verwenden Sie die Klassen PersonalStorage und MapiCalendar, um die Kalenderinformationen zu erhalten. Nachfolgend die Schritte zum Speichern von Kalender‑Einträgen:
- Laden Sie die PST‑Datei in der PersonalStorage‑Klasse.
- Durchsuchen Sie den Kalender‑Ordner.
- Rufen Sie den Inhalt des Kalender‑Ordners ab, um die Nachrichtensammlung zu erhalten.
- Durchlaufen Sie die Nachrichten‑Sammlung.
- Rufen Sie die Methode PersonalStorage.extract_message() auf, um die Kontaktinformationen in der MapiCalendar‑Klasse zu erhalten.
- Rufen Sie die Methode MapiCalendar.save() auf, um den Kalender‑Eintrag im ICS‑Format auf dem Datenträger zu speichern.
Das nachstehende Programm lädt eine PST‑Datei von der Festplatte und speichert alle Kalender‑Einträge im ICS‑Format. Die ICS‑Dateien können anschließend in jedem anderen Programm verwendet werden, das das standardmäßige ICS‑Kalenderformat laden kann. In Microsoft Outlook geöffnet, sieht eine ICS‑Datei wie die im untenstehenden Screenshot aus.
|
| | :- | Das folgende Code‑Snippet zeigt, wie Sie Kalender‑Einträge aus Outlook‑PST in das ICS‑Format exportieren.
Speichern als ICS mit ursprünglichem Zeitstempel
Die Methode keep_original_date_time_stamp der MapiCalendarIcsSaveOptions Klasse ermöglicht es, die ursprünglichen Datums‑ und Zeitstempel der Kalender‑Einträge beim Speichern als ICS‑ (iCalendar‑)Datei beizubehalten. Das folgende Code‑Beispiel demonstriert die Implementierung dieser 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)
Vorkommen aus Wiederholungen ändern/löschen
Ausnahmen können mithilfe der Aspose.Email‑API für .NET zu bestehenden Wiederholungen hinzugefügt werden. Das folgende Code‑Beispiel illustriert die Verwendung dieser Funktion.
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)