Extrayendo Mensajes de Outlook PST y Guardándolos en MSG en Aspose.Email
Contents
[
Hide
]
VSTO
string pstFilePath = "sample.pst";
Outlook.Application app = new Application();
NameSpace outlookNs = app.GetNamespace("MAPI");
// Agregar archivo PST (Archivo de Datos de Outlook) al Perfil Predeterminado
outlookNs.AddStore(pstFilePath);
MAPIFolder rootFolder = outlookNs.Stores["sample"].GetRootFolder();
// Recorrer todas las carpetas en el archivo PST
// TODO: Esto no es recursivo
Folders subFolders = rootFolder.Folders;
foreach (Folder folder in subFolders)
{
Items items = folder.Items;
foreach (object item in items)
{
if (item is MailItem)
{
// Recuperar el Objeto en MailItem
MailItem mailItem = item as MailItem;
Console.WriteLine("Guardando mensaje {0} ....", mailItem.Subject);
// Guardar el mensaje en el disco en formato MSG
// TODO: El nombre del archivo puede contener caracteres inválidos [\ / : * ? " < > |]
mailItem.SaveAs(@"\extracted\" + mailItem.Subject + ".msg", OlSaveAsType.olMSG);
}
}
}
// Eliminar el archivo PST del Perfil Predeterminado
outlookNs.RemoveStore(rootFolder);
Aspose.Email
string pstFilePath ="sample.pst";
// Crear una instancia de PersonalStorage y cargar el PST desde el archivo
using (PersonalStorage personalStorage = PersonalStorage.FromFile(pstFilePath))
{
// Obtener la lista de subcarpetas en el archivo PST
FolderInfoCollection folderInfoCollection = personalStorage.RootFolder.GetSubFolders();
// Recorrer todas las carpetas en el archivo PST
// TODO: Esto no es recursivo
foreach (FolderInfo folderInfo in folderInfoCollection)
{
// Obtener todos los mensajes en esta carpeta
MessageInfoCollection messageInfoCollection = folderInfo.GetContents();
// Recorrer todos los mensajes en esta carpeta
foreach (MessageInfo messageInfo in messageInfoCollection)
{
// Extraer el mensaje en la instancia MapiMessage
MapiMessage message = personalStorage.ExtractMessage(messageInfo);
Console.WriteLine("Guardando mensaje {0} ....", message.Subject);
// Guardar el mensaje en el disco en formato MSG
// TODO: El nombre del archivo puede contener caracteres inválidos [\ / : * ? " < > |]
message.Save(@"\extracted\" + message.Subject + ".msg");
}