OLM to PST

Microsoft Outlook có sẵn cho hệ điều hành Windows và Mac. Outlook cho Mac và Outlook cho Windows lưu trữ email của người dùng trong các tệp dữ liệu. Các tệp dữ liệu này bao gồm tất cả email, danh bạ, tác vụ, ghi chú và mục lịch. Outlook cho Mac giữ các mục hộp thư trong tệp OLM, mà không được hỗ trợ bởi Outlook cho Windows. Do đó, không thể mở tệp OLM của Outlook cho Mac trong Outlook cho Windows. Nếu bạn muốn di chuyển hộp thư của mình từ Outlook cho Mac sang Outlook cho Windows, bạn phải chuyển đổi tệp OLM của Outlook cho Mac sang định dạng tệp PST của Outlook. Bài viết này đề cập đến cách chuyển đổi tệp OLM sang tệp PST theo lập trình trong C#.

Các chủ đề sau đây sẽ được đề cập trong bài viết này:

C# API để chuyển đổi OLM sang PST

Để chuyển đổi OLM sang PST, chúng tôi sẽ sử dụng Aspose.Email cho .NET. Đây là một API xử lý email cho phép bạn thao tác với email và làm việc với các định dạng tệp của các khách hàng email phổ biến như Thunderbird, Outlook, v.v. Bạn có thể tải xuống DLL của API hoặc cài đặt từ NuGet bằng lệnh sau.

PM> Install-Package Aspose.Email

Các bước để chuyển đổi OLM sang PST

Chúng tôi có thể chuyển đổi tệp OLM sang PST bằng cách làm theo các bước dưới đây:

  • Tạo một tệp PST mới và mở nó để ghi
  • Mở tệp OLM nguồn
  • Đọc từng mục hộp thư từ OLM và ghi nó vào PST

Phần tiếp theo mô tả cách chuyển đổi các bước này thành C# và chuyển đổi tệp từ OLM sang PST.

Chuyển đổi OLM sang PST theo lập trình bằng C#

Chúng tôi có thể chuyển đổi OLM sang PST theo lập trình trong C# bằng cách làm theo các bước dưới đây:

  • Đầu tiên, tạo một thể hiện của lớp OlmStorage để mở OLM nguồn.
  • Tiếp theo, tạo một tệp PST mới bằng cách sử dụng phương thức Create.
  • Ngoài ra, chúng tôi sẽ tạo một hàm GetContainerClass sẽ ánh xạ lớp tin nhắn tới lớp thư mục, để chúng tôi có thể tạo các thư mục PST với lớp chứa tương ứng với lớp tin nhắn mà chúng chứa.
  • Cuối cùng, tạo một hàm AddToPst đọc đệ quy từng thư mục và các tin nhắn của nó từ OLM bằng cách sử dụng phương thức EnumerateMapiMessages và thêm chúng vào PST theo cùng thứ tự bằng cách sử dụng các phương thức AddSubFolderAddMessage.

Mẫu mã dưới đây cho thấy cách chuyển đổi OLM sang PST trong C#.

Phương thức chính:

// 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);
}
}

Hàm 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";
}

Hàm 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);
}
}

Nhận Giấy phép API miễn phí

Bạn có thể sử dụng Aspose.Email cho .NET mà không có hạn chế đánh giá bằng cách sử dụng giấy phép tạm thời miễn phí.

Kết luận

Trong bài viết này, bạn đã học cách chuyển đổi OLM sang PST trong C# .NET. Ngoài ra, bạn đã thấy cách đọc tin nhắn từ kho OLM và ghi các mục vào kho PST theo lập trình. Ngoài ra, bạn có thể truy cập tài liệu để khám phá các tính năng khác của Aspose.Email cho .NET. Nếu bạn có bất kỳ câu hỏi nào, bạn có thể đăng câu hỏi trên diễn đàn của chúng tôi.

Xem Thêm