Extraindo Mensagens do PST do Outlook e Salvando-as em MSG no Aspose.Email

VSTO


 string pstFilePath = "sample.pst";

Outlook.Application app = new Application();

NameSpace outlookNs = app.GetNamespace("MAPI");
// Adicione o arquivo PST (Arquivo de Dados do Outlook) ao Perfil Padrão
outlookNs.AddStore(pstFilePath);

MAPIFolder rootFolder = outlookNs.Stores["sample"].GetRootFolder();

// Percorra todas as pastas no arquivo PST

// TODO: Isso não é recursivo

Folders subFolders = rootFolder.Folders;

foreach (Folder folder in subFolders)

{

	Items items = folder.Items;

	foreach (object item in items)

	{

		if (item is MailItem)

		{

			// Recupere o Objeto em MailItem

			MailItem mailItem = item as MailItem;

			Console.WriteLine("Salvando mensagem {0} ....", mailItem.Subject);

			// Salve a mensagem no disco em formato MSG

			// TODO: O nome do arquivo pode conter caracteres inválidos [\ / : * ? " < > |]

			mailItem.SaveAs(@"\extracted\" + mailItem.Subject + ".msg", OlSaveAsType.olMSG);

		}

	}

}

// Remova o arquivo PST do Perfil Padrão

outlookNs.RemoveStore(rootFolder);

Aspose.Email


 string pstFilePath ="sample.pst";

// Crie uma instância de PersonalStorage e carregue o PST do arquivo

using (PersonalStorage personalStorage = PersonalStorage.FromFile(pstFilePath))

{

	// Obtenha a lista de subpastas no arquivo PST

	FolderInfoCollection folderInfoCollection = personalStorage.RootFolder.GetSubFolders();

	// Percorra todas as pastas no arquivo PST

	// TODO: Isso não é recursivo

	foreach (FolderInfo folderInfo in folderInfoCollection)

	{

		// Obtenha todas as mensagens nesta pasta

		MessageInfoCollection messageInfoCollection = folderInfo.GetContents();

		// Percorra todas as mensagens nesta pasta

		foreach (MessageInfo messageInfo in messageInfoCollection)

		{

			// Extraia a mensagem na instância MapiMessage

			MapiMessage message = personalStorage.ExtractMessage(messageInfo);

			Console.WriteLine("Salvando mensagem {0} ....", message.Subject);

			// Salve a mensagem no disco em formato MSG

			// TODO: O nome do arquivo pode conter caracteres inválidos [\ / : * ? " < > |]

			message.Save(@"\extracted\" + message.Subject + ".msg");

		}

Baixar Código Exemplo