استخراج الرسائل من ملف Outlook PST وحفظها كملفات MSG
توضح نصيحة الترقيّة هذه كيفية استخراج الرسائل من ملف Outlook PST وحفظها على القرص كملفات MSG. يتضمن ذلك عدة خطوات:
- قراءة ملف Outlook PST،
- استخراج الرسائل وأخيرًا،
- حفظ الرسائل المستخرجة.
هناك طرق مختلفة لتحقيق النتيجة نفسها: تقارن هذه المقالة بين استخدام VSTO و Aspose.Email. أولاً، هي عينات الشفرة لاستخدام Microsoft Office Interop لاستخراج الرسائل من PST. بعد ذلك المثال، توضح عينات الشفرة كيفية استخدام Aspose.Email Outlook، في Java، لأداء نفس المهمة.
استخدام Microsoft Office Interop
لاستخدام كائنات أتمتة Office لـ Microsoft Outlook، أضف مراجع إلى مكتبة Microsoft Office Interop لـ Outlook إلى المشروع. يجب أيضًا تثبيت Microsoft Office Outlook على الجهاز الذي يُشغل الكود عليه. مساحة الأسماء المستخدمة في مثال الشفرة التالي هي Microsoft.Office.Interop.Outlook.
أمثلة برمجية
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
المقاطع البرمجية التالية تقوم بنفس الشيء كـ الكود أعلاه ولكن يستخدم Aspose.Email. مع تثبيت Aspose.Email for Java لا حاجة لـ Microsoft Outlook على الجهاز. ما عليك سوى الإشارة إلى Aspose.Email لبناء وتشغيل المشروع بنجاح.
نماذج برمجية
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");
}
}
}