Работа с календарни елементи в PST файл
Добавяне на MapiCalendar към PST
Create a New PST File and Add Subfolders показва как да създадете PST файл и да добавите подпапка към него. С Aspose.Email можете да добавите MapiCalendar към подпапката Calendar на PST файл, който сте създали или заредили. По-долу са стъпките за добавяне на MapiCalendar към PST:
- Създайте обект MapiCalendar.
- Задайте свойствата на MapiCalendar, използвайки конструктор и методи.
- Създайте PST чрез метода PersonalStorage.create().
- Създайте предварително дефинирана папка (Calendar) в корена на PST файла, като достъпите коренната папка и след това извикате метода add_mapi_message_item().
Следният кодов откъс показва как да създадете MapiCalendar и след това да го добавите към папката за календар на новосъздаден PST файл.
Запазване на календарни елементи от PST на диск във формат ICS
Тази статия показва как да достъпите календарните елементи от Outlook PST файл и да запазите календара на диска във формат ICS. Използвайте класовете PersonalStorage и MapiCalendar, за да получите информация за календара. По-долу са стъпките за запазване на календарните елементи:
- Заредете PST файла в класа PersonalStorage.
- Прегледайте папката Calendar.
- Получете съдържанието на папката Calendar, за да получите колекцията от съобщения.
- Обхождане на колекцията от съобщения.
- Извикайте метода PersonalStorage.extract_message(), за да получите контактната информация в класа MapiCalendar.
- Извикайте метода MapiCalendar.save(), за да запазите календарния елемент на диска във формат ICS.
Програмата по-долу зарежда PST файл от диска и запазва всички календарни елементи във формат ICS. Файловете ICS след това могат да се използват в всяка друга програма, която може да зареди стандартния календарен файл ICS. Отворен в Microsoft Outlook, файлът ICS изглежда като този на екранната снимка по-долу.
|
| | :- | Следният кодов откъс показва как да експортирате календарните елементи от Outlook PST във формат ICS.
Запазване като ICS с оригинален времеви клеймо
Методът keep_original_date_time_stamp на MapiCalendarIcsSaveOptions клас позволява запазването на оригиналните дата и часови печати на календарните елементи при запазването им като файл ICS (iCalendar). Следният примерен код демонстрира внедряването на този метод:
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)
Промяна/Изтриване на повторения от серии
Изключения могат да бъдат добавени към съществуващи повторения, като се използва Aspose.Email за .NET API. Следният примерен код илюстрира използването на тази функция.
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)