Работа с элементами календаря в файле PST
Добавление MapiCalendar в PST
Создание нового PST, добавление подкаталогов и сообщений показало, как создать файл PST и добавить к нему подкаталог. С помощью Aspose.Email вы можете добавить MapiCalendar в подкаталог Календаря файла PST, который вы создали или загрузили.
Ниже приведены шаги для добавления MapiCalendar в PST:
- Создайте объект MapiCalendar.
- Установите свойства MapiCalendar с помощью конструктора и методов.
- Создайте PST с помощью метода PersonalStorage.create().
- Создайте предопределенную папку (Календарь) в корне файла PST, получив доступ к корневой папке и затем вызвав метод addMapiMessageItem().
Ниже приведен фрагмент кода, который показывает, как создать MapiCalendar и затем добавить его в папку Календаря только что созданного файла PST.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java | |
Calendar cal = Calendar.getInstance(); | |
cal.set(Calendar.YEAR, 2016); | |
cal.set(Calendar.MONTH, Calendar.JANUARY); | |
cal.set(Calendar.DAY_OF_MONTH, 1); | |
Date startDate = cal.getTime(); | |
cal = Calendar.getInstance(); | |
cal.set(Calendar.YEAR, 2016); | |
cal.set(Calendar.MONTH, Calendar.FEBRUARY); | |
cal.set(Calendar.DAY_OF_MONTH, 1); | |
Date endDate = cal.getTime(); | |
// Create the appointment | |
MapiCalendar appointment = new MapiCalendar("LAKE ARGYLE WA 6743", "Appointment", "This is a very important meeting.", startDate, endDate); | |
// Create the meeting | |
MapiRecipientCollection attendees = new MapiRecipientCollection(); | |
attendees.add("ReneeAJones@armyspy.com", "Renee A. Jones", MapiRecipientType.MAPI_TO); | |
attendees.add("SzllsyLiza@dayrep.com", "Szollosy Liza", MapiRecipientType.MAPI_TO); | |
MapiCalendar meeting = new MapiCalendar("Meeting Room 3 at Office Headquarters", "Meeting", "Please confirm your availability.", startDate, | |
endDate, "CharlieKhan@dayrep.com", attendees); | |
PersonalStorage pst = PersonalStorage.create(dataDir + "MapiCalendarToPST_out.pst", FileFormatVersion.Unicode); | |
FolderInfo calendarFolder = pst.createPredefinedFolder("Calendar", StandardIpmFolder.Appointments); | |
calendarFolder.addMapiMessageItem(appointment); | |
calendarFolder.addMapiMessageItem(meeting); |
Сохранение элементов календаря из Outlook PST на диск в формате ICS
Эта статья показывает, как получить доступ к элементам календаря из файла Outlook PST и сохранить календарь на диск в формате ICS. Она использует классы PersonalStorage и MapiCalendar для получения информации о календаре.
Ниже приведены шаги для сохранения элементов календаря:
- Загрузите файл PST в классе PersonalStorage.
- Просмотрите папку Календаря.
- Получите содержимое папки Календаря, чтобы получить коллекцию сообщений.
- Пройдите по коллекции сообщений.
- Вызовите метод PersonalStorage.extractMessage() для получения информации о контакте в классе MapiCalendar.
- Вызовите метод MapiCalendar.save() для сохранения элемента календаря на диск в формате ICS.
В приведенной ниже программе загружается файл PST с диска и сохраняются все элементы календаря в формате ICS. Файлы ICS затем могут быть использованы в любой другой программе, которая может загружать стандартный файл календаря ICS. Если вы откроете любой файл ICS в Microsoft Outlook, он будет выглядеть как на приведенном ниже скриншоте.
![]() |
||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Рисунок: Элемент календаря, сохраненный с помощью Aspose.Email | ||||||||||||||||||||||||||||||||||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
Извлечение элементов календаря из файла PST
Класс MapiCalendar представляет элемент календаря в формате MAPI Microsoft Outlook. Извлеките сообщение из файла PST и преобразуйте его в элемент сообщения MAPI. Приведенный ниже код извлекает элемент календаря из файла PST и преобразует его в объект MapiCalendar для дальнейшей манипуляции или обработки:
MapiCalendar cal = (MapiCalendar) pst.extractMessage(messageInfo).toMapiMessageItem();
Сохранение элементов календаря в формате ICS с оригинальным временным штампом
Используйте приведенный выше фрагмент кода для извлечения элемента календаря из файла PST, а затем укажите дополнительные параметры для сохранения его как ICS с оригинальным временным штампом, используя метод setKeepOriginalDateTimeStamp класса MapiCalendarIcsSaveOptions:
MapiCalendar cal = (MapiCalendar) pst.extractMessage(messageInfo).toMapiMessageItem();
if (cal != null) {
MapiCalendarIcsSaveOptions so = new MapiCalendarIcsSaveOptions();
so.setKeepOriginalDateTimeStamp(true);
cal.save("cal.ics", so);
}
Изменение/удаление вхождений из повторений
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java | |
Date startDate = addHours(new Date(), 12); | |
MapiCalendarEventRecurrence recurrence = new MapiCalendarEventRecurrence(); | |
recurrence.setRecurrencePattern(new MapiCalendarDailyRecurrencePattern()); | |
MapiCalendarRecurrencePattern pattern = recurrence.getRecurrencePattern(); | |
pattern.setPatternType(MapiCalendarRecurrencePatternType.Day); | |
pattern.setPeriod(1); | |
pattern.setEndType(MapiCalendarRecurrenceEndType.NeverEnd); | |
Date exceptionDate = addDays(startDate, 1); | |
// adding one exception | |
MapiCalendarExceptionInfo exceptionInfo = new MapiCalendarExceptionInfo(); | |
exceptionInfo.setLocation("London"); | |
exceptionInfo.setSubject("Subj"); | |
exceptionInfo.setOriginalStartDate(exceptionDate); | |
exceptionInfo.setStartDateTime(exceptionDate); | |
exceptionInfo.setEndDateTime(addHours(exceptionDate, 5)); | |
pattern.getExceptions().addItem(exceptionInfo); | |
pattern.getModifiedInstanceDates().addItem(exceptionDate); | |
// every modified instance also has to have an entry in the DeletedInstanceDates field with the original instance date. | |
pattern.getDeletedInstanceDates().addItem(exceptionDate); | |
// adding one deleted instance | |
pattern.getDeletedInstanceDates().addItem(addHours(exceptionDate, 2)); | |
MapiRecipientCollection recColl = new MapiRecipientCollection(); | |
recColl.add("recepient@gmail.com", "R1", MapiRecipientType.MAPI_TO); | |
MapiCalendar newCal = new MapiCalendar( | |
"This is Location", | |
"This is Summary", | |
"This is recurrence test", | |
startDate, | |
addHours(startDate, 3), | |
"organizer@domain.com", | |
recColl); | |
newCal.setRecurrence(recurrence); | |
ByteArrayOutputStream memory = new ByteArrayOutputStream(); | |
try { | |
PersonalStorage pst = PersonalStorage.create(memory, FileFormatVersion.Unicode); | |
FolderInfo calendarFolder = pst.createPredefinedFolder("Calendar", StandardIpmFolder.Appointments); | |
calendarFolder.addMapiMessageItem(newCal); | |
} | |
finally { | |
memory.close(); | |
} |