
يتوفر Microsoft Outlook لنظامي التشغيل Windows و Mac. يخزن Outlook لنظام Mac و Outlook لنظام Windows رسائل البريد الإلكتروني للمستخدمين في ملفات بيانات. تتكون هذه الملفات من جميع رسائل البريد الإلكتروني، جهات الاتصال، المهام، الملاحظات وعناصر التقويم. يحتفظ Outlook لنظام Mac بعناصر صندوق البريد في ملف OLM، الذي لا تدعمه Outlook لنظام Windows. لذلك، لا يمكن فتح ملف Outlook لنظام Mac (OLM) في Outlook لنظام Windows. إذا كنت ترغب في ترحيل صندوق بريدك من Outlook لنظام Mac إلى Outlook لنظام Windows، يجب عليك تحويل ملف OLM الخاص بـ Outlook لنظام Mac إلى تنسيق ملف PST الخاص بـ Outlook. يتناول هذا المقال كيفية تحويل ملف OLM إلى ملف PST برمجياً بلغة C#.
ستتم تغطية المواضيع التالية في هذا المقال:
- واجهة برمجة التطبيقات C# لتحويل OLM إلى PST
- خطوات تحويل OLM إلى PST
- تحويل OLM إلى PST برمجياً باستخدام C#
واجهة برمجة التطبيقات C# لتحويل OLM إلى PST
لتحويل OLM إلى PST، سنستخدم Aspose.Email لـ .NET. إنها واجهة برمجة تطبيقات معالجة البريد الإلكتروني التي تتيح لك التلاعب بالبريد الإلكتروني والعمل مع تنسيقات الملفات لعملاء البريد الإلكتروني الشائعين مثل Thunderbird وOutlook، إلخ. يمكنك تنزيل DLL الخاص بالواجهة أو تثبيته من NuGet باستخدام الأمر التالي.
PM> Install-Package Aspose.Email
خطوات تحويل OLM إلى PST
يمكننا تحويل ملف OLM إلى PST من خلال اتباع الخطوات التالية:
- إنشاء ملف PST جديد وفتحه للكتابة
- فتح ملف OLM المصدر
- قراءة كل عنصر من عناصر صندوق البريد من OLM وكتابته إلى PST
تصف القسم التالي كيفية تحويل هذه الخطوات إلى C# وتحويل الملفات من OLM إلى PST.
تحويل OLM إلى PST برمجياً باستخدام C#
يمكننا تحويل OLM إلى PST برمجياً بلغة C# من خلال اتباع الخطوات التالية:
- أولاً، إنشاء مثيل من فئة OlmStorage لفتح OLM المصدر.
- بعد ذلك، إنشاء ملف PST جديد باستخدام طريقة Create.
- بالإضافة إلى ذلك، سنقوم بإنشاء دالة
GetContainerClass
التي ستقوم بربط فئة الرسالة بفئة المجلد، بحيث يمكننا إنشاء مجلدات PST بفئة الحاوية التي تتوافق مع فئة الرسالة التي تحتوي عليها. - أخيرًا، قم بإنشاء دالة
AddToPst
التي تقرأ بشكل متكرر كل مجلد ورسائله من OLM باستخدام طريقة EnumerateMapiMessages وتضيفها إلى PST بنفس الترتيب باستخدام طرق AddSubFolder و AddMessage.
تظهر عينة الكود التالية كيفية تحويل OLM إلى PST بلغة C#.
الطريقة الرئيسية:
// create an instance of OlmStorage class to open source OLM | |
using (var olm = new OlmStorage("my.olm")) | |
// create a new PST file | |
using (var pst = PersonalStorage.Create("my.pst", FileFormatVersion.Unicode)) | |
{ | |
// recursively reads each folder and its messages | |
// and adds them to the PST in the same order | |
foreach (var olmFolder in olm.FolderHierarchy) | |
{ | |
AddToPst(pst.RootFolder, olmFolder); | |
} | |
} |
دالة GetContainerClass:
public string GetContainerClass(string messageClass) | |
{ | |
if (messageClass.StartsWith("IPM.Contact") || messageClass.StartsWith("IPM.DistList")) | |
{ | |
return "IPF.Contact"; | |
} | |
if (messageClass.StartsWith("IPM.StickyNote")) | |
{ | |
return "IPF.StickyNote"; | |
} | |
if (messageClass.StartsWith("IPM.Activity")) | |
{ | |
return "IPF.Journal"; | |
} | |
if (messageClass.StartsWith("IPM.Task")) | |
{ | |
return "IPF.Task"; | |
} | |
if (messageClass.StartsWith("IPM.Appointment") || messageClass.StartsWith("IPM.Schedule.meeting")) | |
{ | |
return "IPF.Appointment"; | |
} | |
return "IPF.Note"; | |
} |
دالة AddToPst:
public void AddToPst(FolderInfo pstFolder, OlmFolder olmFolder) | |
{ | |
FolderInfo pstSubFolder = pstFolder.GetSubFolder(olmFolder.Name); | |
foreach (var msg in olmFolder.EnumerateMapiMessages()) | |
{ | |
if (pstSubFolder == null) | |
{ | |
pstSubFolder = pstFolder.AddSubFolder(olmFolder.Name, GetContainerClass(msg.MessageClass)); | |
} | |
pstSubFolder.AddMessage(msg); | |
} | |
if (pstSubFolder == null) | |
{ | |
pstSubFolder = pstFolder.AddSubFolder(olmFolder.Name); | |
} | |
foreach (var olmSubFolder in olmFolder.SubFolders) | |
{ | |
AddToPst(pstSubFolder, olmSubFolder); | |
} | |
} |
الحصول على ترخيص API مجاني
يمكنك استخدام Aspose.Email لـ .NET بدون قيود تقييم باستخدام ترخيص مؤقت مجاني.
الخاتمة
في هذا المقال، تعلمت كيفية تحويل OLM إلى PST بلغة C# .NET. أيضًا، رأيت كيفية قراءة الرسائل من تخزين OLM وكتابة العناصر إلى تخزين PST برمجياً. بخلاف ذلك، يمكنك زيارة التوثيق لاستكشاف ميزات أخرى لـ Aspose.Email لـ .NET. في حال كانت لديك أي أسئلة، يمكنك طرحها في منتدانا.