Extraindo Mensagens do PST do Outlook e Salvando-as em MSG no Aspose.Email
Contents
[
Hide
]
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");
}