Migrasi data email dari Outlook for Mac (OLM) ke format yang didukung secara luas seperti MBOX (untuk Thunderbird / kotak surat Unix) dan PST (Outlook untuk Windows) adalah tugas umum saat berpindah antar platform. Microsoft Outlook untuk Mac menggunakan format OLM (Outlook for Mac Data File) untuk menyimpan email, kontak, kalender, dan item lainnya. Namun, memigrasikan data ini ke lingkungan berbasis Windows atau klien email lain sering memerlukan konversi file OLM ke format yang didukung secara universal seperti MBOX (digunakan oleh klien seperti Thunderbird dan Apple Mail) atau PST (Outlook Personal Storage Table untuk Windows).

Dalam artikel ini, kami akan menunjukkan cara mengonversi file OLM ke format PST dan MBOX dalam C# menggunakan Aspose.Email for .NET, sebuah API kuat yang menyederhanakan tugas migrasi email yang kompleks secara programatis. Anda akan belajar cara membuka file OLM, mengekstrak pesan, mempertahankan hierarki folder, dan menghasilkan arsip email portabel untuk berbagai platform.

Menggunakan Aspose.Email for .NET untuk Konversi

[Aspose.Email for .NET][] menyediakan fitur komprehensif untuk bekerja dengan berbagai format email, termasuk OLM, MBOX, dan PST. Ini menyederhanakan tugas konversi yang kompleks dengan API yang intuitif dan dokumentasi yang luas. Di bawah ini, kami akan memandu langkah‑langkah untuk mengonversi OLM ke MBOX dan PST menggunakan C#.

Untuk memulai, instal paket NuGet Aspose.Email di proyek .NET Anda:

Install-Package Aspose.Email

Paket ini mencakup semua kelas yang diperlukan untuk menangani file OLM, MBOX, dan PST.

Konversi OLM ke MBOX

Format MBOX menyimpan pesan email sebagai entri MIME yang digabungkan, biasanya digunakan oleh klien email sumber terbuka. Di bawah ini adalah contoh kode yang sederhana namun efisien untuk mengonversi semua pesan dari folder OLM menjadi file MBOX. Ini menggunakan anggota API berikut:

Langkah

  1. Tentukan jalur file untuk file OLM input dan file MBOX output.
  2. Buka file OLM menggunakan OlmStorage.FromFile.
  3. Buat penulis MBOX menggunakan MboxrdStorageWriter dengan jalur output dan opsi yang ditentukan.
  4. Akses folder “Inbox” dari file OLM menggunakan pencarian tidak sensitif huruf besar/kecil.
  5. Loop melalui semua pesan MAPI di folder “Inbox”.
  6. Konversi setiap pesan MAPI ke objek MailMessage standar.
  7. Tulis setiap pesan yang telah dikonversi ke file MBOX.

Contoh kode

var olmPath = @"C:\data\archive.olm";
var mboxPath = @"C:\data\output.mbox";

// Load OLM file using OlmStorage
using (var olm = OlmStorage.FromFile(olmPath))
using (var mboxWriter = new MboxrdStorageWriter(mboxPath, new MboxSaveOptions()))
{
    // Get the folder (case-insensitive example)
    var inbox = olm.GetFolder("Inbox", true);

    // Iterate MAPI messages (returns MapiMessage objects)
    foreach (MapiMessage mapi in inbox.EnumerateMapiMessages())
    {
        // Convert to MailMessage and write to MBOX
        var mail = mapi.ToMailMessage(new MailConversionOptions());
        mboxWriter.WriteMessage(mail);
    }
}

Catatan: Jika Anda menginginkan satu MBOX per folder, buat penulis terpisah untuk setiap folder OLM.
Jika Anda lebih suka satu arsip tunggal, gunakan kembali satu instance MboxrdStorageWriter dan panggil WriteMessage berulang kali seperti yang ditunjukkan dalam contoh kode di atas.

Konversi OLM ke PST

Mengonversi OLM ke PST sering kali memerlukan tidak hanya menyalin pesan tetapi juga membuat kembali hierarki folder. Contoh kode di bawah ini menunjukkan cara mengonversi dan menyalin struktur folder serta pesan dari file arsip Outlook OLM ke file PST Unicode menggunakan Aspose.Email for .NET.

Anggota utama

Langkah‑langkah

  1. Tetapkan jalur file untuk file OLM sumber dan file PST tujuan.
  2. Buka arsip OLM untuk membaca dan buat file PST baru untuk menulis.
  3. Ambil folder tingkat atas dari arsip OLM.
  4. Definisikan fungsi pembantu untuk menemukan atau membuat folder yang cocok di dalam PST untuk nama folder tertentu.
  5. Definisikan fungsi rekursif untuk:
    • Membuat atau mendapatkan folder PST yang sesuai untuk setiap folder OLM.
    • Menyalin semua pesan dari folder OLM ke folder PST.
    • Memanggil dirinya sendiri untuk setiap subfolder dalam folder OLM guna mempertahankan struktur folder.
  6. Panggil fungsi rekursif pada semua folder OLM tingkat atas, menggunakan folder root PST sebagai induk.
  7. Simpan seluruh hierarki folder dan pesan ke dalam file PST baru, mempertahankan data MAPI.

Contoh kode

var olmPath = @"C:\data\archive.olm";
var pstPath = @"C:\data\output.pst";

// Create a new PST file
using (var olm = OlmStorage.FromFile(olmPath))
using (var pst = PersonalStorage.Create(pstPath, FileFormatVersion.Unicode))
{
    // Get top-level folders in OLM
    var rootFolders = olm.GetFolders();

    // Helper: map OlmFolder -> FolderInfo in PST by recursively creating subfolders
    FolderInfo GetOrCreatePstFolder(FolderInfo parentPstFolder, string folderName)
    {
        // Try to find existing subfolder (case-insensitive)
        foreach (var sub in parentPstFolder.GetSubFolders())
        {
            if (string.Equals(sub.DisplayName, folderName, StringComparison.OrdinalIgnoreCase))
                return sub;
        }

        // Create new subfolder
        return parentPstFolder.AddSubFolder(folderName);
    }

    // Recursive traversal
    void ProcessOlmFolder(OlmFolder olmFolder, FolderInfo pstParent)
    {
        // Create / get the corresponding PST folder
        var pstFolder = GetOrCreatePstFolder(pstParent, olmFolder.Name);

        // Copy messages: OlmFolder.EnumerateMapiMessages returns MapiMessage instances
        foreach (var mapi in olmFolder.EnumerateMapiMessages())
        {
            // AddMessage preserves MAPI data into PST
            pstFolder.AddMessage(mapi);
        }

        // Recurse into OLM subfolders (OlmFolder.SubFolders property)
        foreach (var child in olmFolder.SubFolders)
        {
            ProcessOlmFolder(child, pstFolder);
        }
    }

    // Note: PST.RootFolder exists; create top-level folders under it.
    foreach (var top in rootFolders)
    {
        // Skip creating a duplicate for default PST root folder names if needed
        ProcessOlmFolder(top, pst.RootFolder);
    }
}

Penting: sebuah PST yang baru dibuat sudah menyertakan folder Deleted Items secara default — jadi berhati-hatilah agar tidak menggandakan folder default.

Catatan:

Kesimpulan

Dalam artikel ini, kami telah mempelajari cara mengonversi file Outlook for Mac (OLM) ke format PST dan MBOX dalam C# menggunakan Aspose.Email for .NET. Kami mengeksplorasi cara membuka dan memproses arsip OLM, mengekstrak pesan, dan mempertahankan hierarki folder saat mengekspor data ke format penyimpanan email baru. Dengan Aspose.Email API, pengembang dapat dengan mudah mengotomatiskan migrasi email lintas platform, memastikan kompatibilitas antara Outlook for Mac, Outlook for Windows, dan klien sumber terbuka seperti Thunderbird.

Untuk detail lebih lanjut, jelajahi dokumentasi Aspose.Email dan referensi API.

Sumber Daya Tambahan

Lihat Juga