Extrayendo Mensajes de Outlook PST y Guardándolos como MSG

Usando Microsoft Office Interop

Para utilizar objetos de automatización de Office para Microsoft Outlook, agregue referencias a las bibliotecas de Microsoft Office Interop para Outlook al proyecto. Microsoft Office Outlook también debe estar instalado en la máquina donde se ejecuta el código. El espacio de nombres utilizado en el ejemplo de código que sigue es Microsoft.Office.Interop.Outlook.

Ejemplos de Programación

C#


 string pstFilePath = @"C:\sample.pst";

Application app = new Application();

NameSpace outlookNs = app.GetNamespace("MAPI");

// Agregar el archivo PST (Archivo de Datos de Outlook) al Perfil Predeterminado

outlookNs.AddStore(pstFilePath);

MAPIFolder rootFolder = outlookNs.Stores["items"].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 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);

Usando Aspose.Email

Los siguientes fragmentos de código hacen lo mismo que el código anterior pero utilizan Aspose.Email. Con Aspose.Email para Java instalado, Microsoft Outlook ya no es necesario en la máquina. Simplemente haga referencia a Aspose.Email para compilar y ejecutar el proyecto con éxito.

Ejemplos de Programación


String pstFilePath = "C:\\sample.pst";

// Crear una instancia de PersonalStorage y cargar el PST desde el archivo
try (PersonalStorage personalStorage = PersonalStorage.fromFile(pstFilePath)) {
    // Obtener la lista de subcarpetas en el archivo PST
    FolderInfoCollection folderInfoCollection = personalStorage.getRootFolder().getSubFolders();

    // Recorrer todas las carpetas en el archivo PST
    // Esto no es recursivo
    for (FolderInfo folderInfo : folderInfoCollection) {
        // Obtener todos los mensajes en esta carpeta
        MessageInfoCollection messageInfoCollection = folderInfo.getContents();

        // Recorrer todos los mensajes en esta carpeta
        for (MessageInfo messageInfo : messageInfoCollection) {
            // Extraer el mensaje en una instancia de MapiMessage
            MapiMessage message = personalStorage.extractMessage(messageInfo);

            System.out.println("Guardando mensaje " + message.getSubject() + " ...");

            // Guardar el mensaje en disco en formato MSG
            // TODO: El nombre del archivo puede contener caracteres inválidos [\ / : * ? " < > |]
            message.save("\\extracted\\" + message.getSubject() + ".msg");
        }
    }
}