Trabajando con Elementos del Calendario en Archivos PST

Agregar MapiCalendar a PST

Crear un Nuevo Archivo PST y Agregar Subcarpetas mostró cómo crear un archivo PST y agregar una subcarpeta a él. Con Aspose.Email puedes agregar MapiCalendar a la subcarpeta del Calendario de un archivo PST que hayas creado o cargado. A continuación se muestran los pasos para agregar MapiCalendar a un PST:

  1. Crear un objeto MapiCalendar.
  2. Establecer las propiedades de MapiCalendar utilizando un constructor y métodos.
  3. Crear un PST utilizando el método PersonalStorage.Create().
  4. Crear una carpeta predefinida (Calendario) en la raíz del archivo PST accediendo a la carpeta raíz y luego llamando al método AddMapiMessageItem().

El siguiente fragmento de código muestra cómo crear un MapiCalendar y luego agregarlo a la carpeta del calendario de un archivo PST recién creado.

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);
}

Guardar Elementos del Calendario desde PST en Disco en Formato ICS

Este artículo muestra cómo acceder a los elementos del calendario desde un archivo PST de Outlook y guardar el calendario en disco en formato ICS. Usa las clases PersonalStorage y MapiCalendar para obtener la información del calendario. A continuación se muestran los pasos para guardar elementos del calendario:

  1. Cargar el archivo PST en la clase PersonalStorage.
  2. Navegar por la carpeta del Calendario.
  3. Obtener el contenido de la carpeta del Calendario para obtener la colección de mensajes.
  4. Recorrer la colección de mensajes.
  5. Llamar al método PersonalStorage.ExtractMessage() para obtener la información de contacto en la clase MapiCalendar.
  6. Llamar al método MapiCalendar.Save() para guardar el elemento del calendario en disco en formato ICS.

El programa a continuación carga un archivo PST desde el disco y guarda todos los elementos del calendario en formato ICS. Los archivos ICS pueden ser utilizados en cualquier otro programa que pueda cargar el archivo de calendario ICS estándar. Abierto en Microsoft Outlook, un archivo ICS se ve como el de la captura de pantalla a continuación.

todo:image_alt_text
El siguiente fragmento de código muestra cómo exportar los elementos del calendario desde Outlook PST a formato 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");
}
}