Leer archivo PST de Outlook y obtener información de carpetas y subcarpetas

Leer archivo PST de Outlook y obtener información de carpetas y subcarpetas

Aspose.Email para C++ proporciona una API para leer archivos PST de Microsoft Outlook. Puedes cargar un archivo PST desde el disco o transmitirlo a una instancia de la clase PersonalStorage y obtener información sobre su contenido, por ejemplo, carpetas, subcarpetas y mensajes. La API también proporciona la capacidad de incluir carpetas de búsqueda mientras se realiza la búsqueda de mensajes en las carpetas PST.

Cargando un archivo PST

Un archivo PST de Outlook puede cargarse en una instancia de la clase PersonalStorage. El siguiente fragmento de código muestra cómo cargar el archivo PST.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// Load the Outlook PST file
System::SharedPtr<PersonalStorage> personalStorage = PersonalStorage::FromFile(dataDir + L"PersonalStorage.pst");

Mostrando información de carpetas

Después de cargar el archivo PST en la clase PersonalStorage, puedes obtener información sobre el nombre de visualización del archivo, la carpeta raíz, subcarpetas y el recuento de mensajes. El siguiente fragmento de código muestra cómo mostrar el nombre del archivo PST, las carpetas y el número de mensajes en las carpetas.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// The path to the File directory.
System::String dataDir = RunExamples::GetDataDir_Outlook();
System::String dst = dataDir + L"PersonalStorage.pst";
// load PST file
System::SharedPtr<PersonalStorage> personalStorage = PersonalStorage::FromFile(dst);
// Get the folders information
System::SharedPtr<FolderInfoCollection> folderInfoCollection = personalStorage->get_RootFolder()->GetSubFolders();
// Browse through each folder to display folder name and number of messages
{
auto folderInfo_enumerator = (folderInfoCollection)->GetEnumerator();
decltype(folderInfo_enumerator->get_Current()) folderInfo;
while (folderInfo_enumerator->MoveNext() && (folderInfo = folderInfo_enumerator->get_Current(), true))
{
System::Console::WriteLine(System::String(L"Folder: ") + folderInfo->get_DisplayName());
System::Console::WriteLine(System::String(L"Total items: ") + folderInfo->get_ContentCount());
System::Console::WriteLine(System::String(L"Total unread items: ") + folderInfo->get_ContentUnreadCount());
System::Console::WriteLine(L"-----------------------------------");
}
}

Recuperando información de la carpeta padre desde MessageInfo

El siguiente fragmento de código muestra cómo recuperar información de la carpeta padre desde MessageInfo.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// Load Pst File
System::String dataDir = RunExamples::GetDataDir_Outlook() + L"PersonalStorage.pst";
{
System::SharedPtr<PersonalStorage> personalStorage = PersonalStorage::FromFile(dataDir);
auto folder_enumerator = (personalStorage->get_RootFolder()->GetSubFolders())->GetEnumerator();
decltype(folder_enumerator->get_Current()) folder;
while (folder_enumerator->MoveNext() && (folder = folder_enumerator->get_Current(), true))
{
auto msg_enumerator = (folder->EnumerateMessages())->GetEnumerator();
decltype(msg_enumerator->get_Current()) msg;
while (msg_enumerator->MoveNext() && (msg = msg_enumerator->get_Current(), true))
{
System::SharedPtr<FolderInfo> fi = personalStorage->GetParentFolder(msg->get_EntryId());
}
}
}