Работа с элементами календаря в файле 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/kashifiqb/Aspose.Email-for-C | |
System::String dataDir = RunExamples::GetDataDir_Outlook(); | |
// Create the appointment | |
System::SharedPtr<MapiCalendar> appointment = System::MakeObject<MapiCalendar>(L"LAKE ARGYLE WA 6743", L"Appointment", L"This is a very important meeting :)", System::DateTime(2012, 10, 2, 13, 0, 0), System::DateTime(2012, 10, 2, 14, 0, 0)); | |
// Create the meeting | |
System::SharedPtr<MapiRecipientCollection> attendees = System::MakeObject<MapiRecipientCollection>(); | |
attendees->Add(L"ReneeAJones@armyspy.com", L"Renee A. Jones", Aspose::Email::Outlook::MapiRecipientType::MAPI_TO); | |
attendees->Add(L"SzllsyLiza@dayrep.com", L"Szollosy Liza", Aspose::Email::Outlook::MapiRecipientType::MAPI_TO); | |
System::SharedPtr<MapiCalendar> meeting = System::MakeObject<MapiCalendar>(L"Meeting Room 3 at Office Headquarters", L"Meeting", L"Please confirm your availability.", System::DateTime(2012, 10, 2, 13, 0, 0), System::DateTime(2012, 10, 2, 14, 0, 0), L"CharlieKhan@dayrep.com", attendees); | |
System::String path = dataDir + L"AddMapiCalendarToPST_out.pst"; | |
if (System::IO::File::Exists(path)) | |
{ | |
System::IO::File::Delete(path); | |
} | |
{ | |
System::SharedPtr<PersonalStorage> pst = PersonalStorage::Create(dataDir + L"AddMapiCalendarToPST_out.pst", Aspose::Email::Outlook::Pst::FileFormatVersion::Unicode); | |
System::SharedPtr<FolderInfo> calendarFolder = pst->CreatePredefinedFolder(L"Calendar", Aspose::Email::Outlook::Pst::StandardIpmFolder::Appointments); | |
calendarFolder->AddMapiMessageItem(appointment); | |
calendarFolder->AddMapiMessageItem(meeting); | |
} |
Сохранение элементов календаря с PST на диск в формате ICS
В этой статье показано, как получить доступ к элементам календаря из файла PST Outlook и сохранить календарь на диск в формате ICS. Используйте классы PersonalStorage и MapiCalendar для получения информации о календаре. Ниже приведены шаги по сохранению элементов календаря:
- Загрузите файл PST в классе PersonalStorage.
- Просмотрите папку Календарь.
- Получите содержимое папки Календарь, чтобы получить коллекцию сообщений.
- Просмотрите коллекцию сообщений.
- Вызовите метод PersonalStorage.ExtractMessage(), чтобы получить контактную информацию в классе MapiCalendar.
- Вызовите метод MapiCalendar.Save(), чтобы сохранить элемент календаря на диск в формате ICS.
Программа ниже загружает файл PST с диска и сохраняет все элементы календаря в формате ICS. Файлы ICS затем можно использовать в любой другой программе, которая может загружать стандартный файл календаря ICS. Открытый в Microsoft Outlook, файл ICS выглядит как на скриншоте ниже.
![]() |
---|
Следующий фрагмент кода показывает, как экспортировать элементы календаря из PST Outlook в формат ICS. |
For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C | |
// The path to the documents directory. | |
System::String dataDir = RunExamples::GetDataDir_Outlook(); | |
// Load the Outlook PST file | |
System::SharedPtr<PersonalStorage> pst = PersonalStorage::FromFile(dataDir + L"Sub.pst"); | |
// Get the Calendar folder | |
System::SharedPtr<FolderInfo> folderInfo = pst->get_RootFolder()->GetSubFolder(L"Inbox"); | |
// Loop through all the calendar items in this folder | |
System::SharedPtr<MessageInfoCollection> messageInfoCollection = folderInfo->GetContents(); | |
{ | |
auto messageInfo_enumerator = (messageInfoCollection)->GetEnumerator(); | |
decltype(messageInfo_enumerator->get_Current()) messageInfo; | |
while (messageInfo_enumerator->MoveNext() && (messageInfo = messageInfo_enumerator->get_Current(), true)) | |
{ | |
// Get the calendar information | |
System::SharedPtr<MapiMessage> calendar = System::DynamicCast<Aspose::Email::Outlook::MapiMessage>(pst->ExtractMessage(messageInfo)->ToMapiMessageItem()); | |
// Display some contents on screen | |
System::Console::WriteLine(System::String(L"Name: ") + calendar->get_Subject()); | |
// Save to disk in ICS format | |
calendar->Save(dataDir + L"\\Calendar\\" + calendar->get_Subject() + L"_out.ics"); | |
} | |
} |