Berichten uit Outlook‑PST halen en opslaan als MSG
Deze migratietip toont hoe berichten uit een Outlook‑PST‑bestand te extraheren en op schijf op te slaan als MSG‑bestanden. Het omvat verschillende stappen:
- Het Outlook‑PST‑bestand lezen,
- berichten extraheren en uiteindelijk,
- het opslaan van de geëxtraheerde berichten.
Er zijn verschillende manieren om hetzelfde resultaat te bereiken: dit artikel vergelijkt het gebruik van VSTO en Aspose.Email. Ten eerste, zijn code‑voorbeelden voor het gebruik van Microsoft Office Interop om berichten uit PST te halen. Na dat voorbeeld, code‑voorbeelden laten zien hoe Aspose.Email Outlook te gebruiken, in Java, om dezelfde taak uit te voeren.
Microsoft Office Interop gebruiken
Om Office Automation‑objecten voor Microsoft Outlook te gebruiken, voeg referenties toe aan de Microsoft Office Interop‑bibliotheken voor Outlook aan het project. Microsoft Office Outlook moet ook op de machine geïnstalleerd zijn waarop de code wordt uitgevoerd. De namespace die in het volgende code‑voorbeeld wordt gebruikt is Microsoft.Office.Interop.Outlook.
Programmeervoorbeelden
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);
Aspose.Email gebruiken
De volgende codefragmenten doen hetzelfde als de bovenstaande code maar gebruikt Aspose.Email. Met Aspose.Email for Java geïnstalleerd is Microsoft Outlook niet langer nodig op de machine. Verwijs simpelweg naar Aspose.Email om het project succesvol te bouwen en uit te voeren.
Programmeer Voorbeelden
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");
}
}
}