Extrahování zpráv z Outlook PST a jejich uložení do MSG
Tento migrační tip ukazuje, jak extrahovat zprávy ze souboru Outlook PST a uložit je na disk jako soubory MSG. Zahrnuje několik kroků:
- Čtení souboru Outlook PST,
- extrahovat zprávy a nakonec,
- uložit extrahované zprávy.
Existují různé způsoby, jak dosáhnout stejného výsledku: tento článek porovnává použití VSTO a Aspose.Email. Nejprve jsou ukázky kódu pro použití Microsoft Office Interop k extrahování zpráv z PST. Po tomto příkladu, ukázky kódu ukazují, jak použít Aspose.Email Outlook, v Javě, k provedení stejné úlohy.
Použití Microsoft Office Interop
Chcete‑li použít objekty Office Automation pro Microsoft Outlook, přidejte do projektu reference na knihovny Microsoft Office Interop pro Outlook. Microsoft Office Outlook musí být také nainstalován na počítači, na kterém kód běží. Prostor názvů použitý v následující ukázce kódu je Microsoft.Office.Interop.Outlook.
Programovací příklady
C#
string pstFilePath = @"C:\sample.pst";
Application app = new Application();
NameSpace outlookNs = app.GetNamespace("MAPI");
// Add PST file (Outlook Data File) to Default Profile
outlookNs.AddStore(pstFilePath);
MAPIFolder rootFolder = outlookNs.Stores["items"].GetRootFolder();
// Traverse through all folders in the PST file
// TODO: This is not recursive
Folders subFolders = rootFolder.Folders;
foreach (Folder folder in subFolders)
{
Items items = folder.Items;
foreach (object item in items)
{
if (item is MailItem)
{
// Retrieve the Object into MailItem
MailItem mailItem = item as MailItem;
Console.WriteLine("Saving message {0} ....", mailItem.Subject);
// Save the message to disk in MSG format
// TODO: File name may contain invalid characters [\ / : * ? " < > |]
mailItem.SaveAs(@"\extracted\" + mailItem.Subject + ".msg",OlSaveAsType.olMSG);
}
}
}
// Remove PST file from Default Profile
outlookNs.RemoveStore(rootFolder);
Používání Aspose.Email
Následující úryvky kódu dělají totéž jako výše uvedený kód ale používá Aspose.Email. Po instalaci Aspose.Email pro Java již není Microsoft Outlook na počítači potřeba. Stačí referencovat Aspose.Email pro úspěšnou kompilaci a běh projektu.
Programové ukázky
String pstFilePath = "C:\\sample.pst";
// Create an instance of PersonalStorage and load the PST from file
try (PersonalStorage personalStorage = PersonalStorage.fromFile(pstFilePath)) {
// Get the list of subfolders in PST file
FolderInfoCollection folderInfoCollection = personalStorage.getRootFolder().getSubFolders();
// Traverse through all folders in the PST file
// This is not recursive
for (FolderInfo folderInfo : folderInfoCollection) {
// Get all messages in this folder
MessageInfoCollection messageInfoCollection = folderInfo.getContents();
// Loop through all the messages in this folder
for (MessageInfo messageInfo : messageInfoCollection) {
// Extract the message in MapiMessage instance
MapiMessage message = personalStorage.extractMessage(messageInfo);
System.out.println("Saving message " + message.getSubject() + " ...");
// Save the message to disk in MSG format
// TODO: File name may contain invalid characters [\ / : * ? " < > |]
message.save("\\extracted\\" + message.getSubject() + ".msg");
}
}
}