Estrazione dei messaggi da Outlook PST e salvataggio come MSG
Questo suggerimento di migrazione mostra come estrarre i messaggi da un file PST di Outlook e salvarli su disco come file MSG. Richiede diversi passaggi:
- Leggere il file PST di Outlook,
- estrarre i messaggi e, infine,
- salvare i messaggi estratti.
Esistono diversi modi per ottenere lo stesso risultato: questo articolo confronta l’uso di VSTO e Aspose.Email. Prima, sono esempi di codice per utilizzare Microsoft Office Interop per estrarre i messaggi dal PST. Dopo quell’esempio, gli esempi di codice mostrano come usare Aspose.Email Outlook, in Java, per eseguire la stessa operazione.
Utilizzo di Microsoft Office Interop
Per utilizzare gli oggetti di Office Automation per Microsoft Outlook, aggiungi riferimenti alle librerie Microsoft Office Interop per Outlook al progetto. Microsoft Office Outlook deve anche essere installato sulla macchina su cui viene eseguito il codice. Lo spazio dei nomi utilizzato nel campione di codice che segue è Microsoft.Office.Interop.Outlook.
Esempi di programmazione
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);
Utilizzare Aspose.Email
I seguenti frammenti di codice fanno la stessa cosa di il codice sopra ma utilizza Aspose.Email. Con Aspose.Email per Java installato Microsoft Outlook non è più necessario sulla macchina. Basta referenziare Aspose.Email per compilare ed eseguire correttamente il progetto.
Esempi di programmazione
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");
}
}
}