Wyodrębnianie wiadomości z pliku Outlook PST i zapisywanie ich jako MSG
Ta wskazówka migracji pokazuje, jak wyodrębnić wiadomości z pliku Outlook PST i zapisać je na dysku jako pliki MSG. Wymaga kilku kroków:
- Odczytaj plik Outlook PST,
- wyodrębnij wiadomości i w końcu,
- zapisz wyodrębnione wiadomości.
Istnieją różne sposoby osiągnięcia tego samego wyniku: ten artykuł porównuje użycie VSTO i Aspose.Email. Najpierw są przykłady kodu używające Microsoft Office Interop do wyodrębniania wiadomości z PST. Po tym przykładzie, przykłady kodu pokazują, jak używać Aspose.Email Outlook, w Javie, aby wykonać to samo zadanie.
Używanie Microsoft Office Interop
Aby używać obiektów automatyzacji Office dla Microsoft Outlook, dodaj odwołania do bibliotek Microsoft Office Interop dla Outlook do projektu. Microsoft Office Outlook musi być również zainstalowany na maszynie, na której uruchamiany jest kod. Przestrzeń nazw używana w poniższym przykładzie kodu to Microsoft.Office.Interop.Outlook.
Przykłady programistyczne
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);
Używanie Aspose.Email
Poniższe fragmenty kodu wykonują to samo co powyższy kod ale używa Aspose.Email. Po zainstalowaniu Aspose.Email dla Javy Microsoft Outlook nie jest już potrzebny na maszynie. Wystarczy odwołać się do Aspose.Email, aby zbudować i uruchomić projekt pomyślnie.
Przykłady programistyczne
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");
}
}
}