تبدیل OLM به PST
Contents
[
Hide
]
OLM یک فرمت فایل پایگاهداده است که توسط Microsoft Outlook برای Mac استفاده میشود. فایلهای OLM پیامهای ایمیل، دادههای تقویم، مخاطبین و تنظیمات برنامه را ذخیره میکنند و توسط Outlook برای ویندوز پشتیبانی نمیشوند. برای انتقال یک صندوقپست از Outlook برای Mac به Outlook برای ویندوز، لازم است فایل OLM را به PST فرمت. Aspose.Email برای .NET این کار را بهصورت کد انجام میدهد، بدون نیاز به نصب Microsoft Outlook.
نحوه کار تبدیل
برای تبدیل یک فایل OLM به PST، مراحل زیر را دنبال کنید:
- یک نمونه از OlmStorage کلاس برای باز کردن فایل OLM منبع.
- یک فایل PST جدید ایجاد کنید با PersonalStorage.Create متد.
- Implement a
GetContainerClassمتد که یک کلاس پیام را به کلاس پوشه (کانتینر) متناظر نگاشت میکند، بهگونهای که هر پوشه با نوع صحیح در PST ساخته شود. - Implement an
AddToPstمتد که بهصورت بازگشتی هر پوشه و پیامهایش را از فایل OLM میخواند - با استفاده از EnumerateMapiMessages - و آنها را بههمین ترتیب به PST اضافه میکند، با استفاده ازAddSubFolderوAddMessageمتدهای FolderInfo.
نمونه کد
کد زیر نشان میدهد چطور یک فایل OLM را به PST تبدیل کنید.
متد Main:
// create an instance of OlmStorage class to open the source OLM
using (var olm = new OlmStorage("my.olm"))
// create a new PST file
using (var pst = PersonalStorage.Create("my.pst", FileFormatVersion.Unicode))
{
// recursively read each folder and its messages
// and add 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);
}
}
تبدیل در جهت مخالف (PST به OLM) پشتیبانی نمیشود، زیرا یک فایل OLM همیشه توسط Outlook برای Mac هنگام اضافه کردن یک حساب و همگامسازی با سرور ایمیل ایجاد میشود.