
Microsoft Outlook มีให้บริการสำหรับ Windows และ Mac ระบบปฏิบัติการ Outlook สำหรับ Mac และ Outlook สำหรับ Windows เก็บอีเมลของผู้ใช้ในไฟล์ข้อมูล ไฟล์ข้อมูลเหล่านี้ประกอบด้วยอีเมลทั้งหมด รายชื่อผู้ติดต่อ งาน หมายเหตุ และรายการปฏิทิน Outlook สำหรับ Mac เก็บรายการ mailbox ในไฟล์ OLM ซึ่งไม่รองรับโดย Outlook สำหรับ Windows ดังนั้นจึงไม่สามารถเปิดไฟล์ Outlook สำหรับ Mac (OLM) ใน Outlook สำหรับ Windows ได้ หากคุณต้องการย้าย mailbox ของคุณจาก Outlook สำหรับ Mac ไปยัง Outlook สำหรับ Windows คุณต้องแปลงไฟล์ OLM ของ Outlook สำหรับ Mac เป็นรูปแบบไฟล์ PST ของ Outlook บทความนี้ครอบคลุม วิธีการแปลงไฟล์ OLM เป็นไฟล์ PST โปรแกรมmatically ใน C#.
หัวข้อด้านล่างจะถูกครอบคลุมในบทความนี้:
- C# API เพื่อแปลง OLM เป็น PST
- ขั้นตอนในการแปลง OLM เป็น PST
- แปลง OLM เป็น PST โปรแกรมmatically โดยใช้ C#
C# API เพื่อแปลง OLM เป็น PST
ในการแปลง OLM เป็น PST เราจะใช้ Aspose.Email สำหรับ .NET มันคือ API การประมวลผลอีเมลที่ช่วยให้คุณจัดการอีเมลและทำงานกับรูปแบบไฟล์ของไคลเอนต์อีเมลยอดนิยม เช่น Thunderbird, Outlook เป็นต้น คุณสามารถ ดาวน์โหลด DLL ของ API หรือติดตั้งจาก NuGet โดยใช้คำสั่งต่อไปนี้
PM> Install-Package Aspose.Email
ขั้นตอนในการแปลง OLM เป็น PST
เราสามารถแปลงไฟล์ OLM เป็น PST โดยทำตามขั้นตอนด้านล่าง:
- สร้างไฟล์ PST ใหม่และเปิดเพื่อเขียน
- เปิดไฟล์ OLM แหล่งข้อมูล
- อ่านแต่ละรายการ mailbox จาก OLM และเขียนลง PST
ส่วนถัดไปจะอธิบายวิธีการแปลงขั้นตอนเหล่านี้เป็น C# และแปลงไฟล์จาก OLM เป็น PST
แปลง OLM เป็น PST โปรแกรมmatically โดยใช้ C#
เราสามารถแปลง OLM เป็น PST โปรแกรมmatically ใน 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 storage และเขียนรายการลงใน PST storage โปรแกรมmatically นอกจากนี้คุณสามารถเยี่ยมชม เอกสาร เพื่อสำรวจคุณสมบัติอื่น ๆ ของ Aspose.Email สำหรับ .NET. หากคุณมีคำถามใด ๆ คุณสามารถโพสต์ไปที่ ฟอรัมของเรา.