Outlook PST'den Mesajları Çıkarma ve MSG'ye Kaydetme
Bu taşıma ipucu, bir Outlook PST dosyasından mesajları nasıl çıkaracağınızı ve bunları diske MSG dosyaları olarak nasıl kaydedeceğinizi gösterir. Birkaç adım içerir:
- Outlook PST dosyasını okuyun,
- mesajları çıkart ve, sonunda,
- çıkarılan mesajları kaydet.
Aynı sonuca ulaşmanın farklı yolları vardır: bu makale VSTO ve Aspose.Email kullanımını karşılaştırır. İlk olarak, şunlardır Microsoft Office Interop kullanımına yönelik kod örnekleri PST’den mesajları çıkarmak için. Bu örnekten sonra, kod örnekleri, Aspose.Email Outlook kullanımını gösterir, Java’da aynı görevi gerçekleştirmek için.
Microsoft Office Interop Kullanımı
Microsoft Outlook için Office Automation nesnelerini kullanmak amacıyla, projeye Microsoft Office Interop for Outlook kütüphanelerine referans ekleyin. Microsoft Office Outlook ayrıca kodun çalıştığı makinede yüklü olmalıdır. Aşağıdaki kod örneğinde kullanılan ad alanı Microsoft.Office.Interop.Outlook’dur.
Programlama Örnekleri
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 Kullanımı
Aşağıdaki kod parçacıkları, şunun yaptığıyla aynıdır: yukarıdaki kod ancak Aspose.Email kullanır. Aspose.Email for Java yüklü olduğunda, Microsoft Outlook makinede ihtiyaç duyulmaz. Projeyi başarılı bir şekilde derlemek ve çalıştırmak için sadece Aspose.Email’e referans verin.
Programlama Örnekleri
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");
}
}
}