Baca File OLM MS Outlook di C# .NET

OLM adalah format file yang digunakan Microsoft Outlook untuk Mac untuk menyimpan data lokal. OLM berisi data lokal seperti email, lampiran, catatan, data kalender, kontak, tugas, riwayat, dll. File OLM digunakan oleh Outlook untuk Mac. Outlook untuk Windows tidak dapat mengakses atau membukanya. Versi Outlook untuk Windows hanya mendukung format file PST untuk menyimpan data. Dalam artikel ini kita akan mempertimbangkan cara membuka dan membaca file format OLM dari aplikasi C#.

API C# .NET untuk Membaca File OLM

Aspose.Email untuk .NET adalah API yang kuat yang menyediakan berbagai fitur untuk menerapkan aplikasi email. Selain itu, memungkinkan membaca file OLM dan format penyimpanan email lainnya seperti MBOX, PST/OST. Anda dapat menginstal perpustakaan ini melalui NuGet atau mengunduh DLL-nya.

PM> Install-Package Aspose.Email

Membuka file format OLM

API Aspose.Email memperkenalkan dua cara untuk membuka file format OLM:

Ada perbedaan perilaku antara metode ini. Lihat bagian di bawah.

Membuka file dengan konstruktor

Untuk membuka file, Anda harus memanggil konstruktor dari kelas OlmStorage dan memberikan nama file lengkap atau aliran sebagai argumennya:

var fileName = "MyStorage.olm";
var olm = new OlmStorage(fileName);

Membuka file menggunakan metode statis FromFile

Untuk membuka file, Anda harus menggunakan metode statis FromFile dan memberikan nama file lengkap atau aliran sebagai argumennya:

var fileName = "MyStorage.olm";
var olm = OlmStorage.FromFile(fileName);

Mendapatkan folder

Setelah membuka file menggunakan konstruktor, properti FolderHierarchy akan dapat diakses. Ini mengembalikan daftar direktori yang ada dalam file OLM. Setiap objek kelas OlmFolder dari daftar memiliki properti SubFolders, yang mengembalikan daftar subfolder. Dengan demikian, kita memiliki akses ke semua direktori di OLM.

Contoh di bawah ini menampilkan daftar semua folder dalam urutan hierarkis:

using (var olm = new OlmStorage(fileName))
{
PrintAllFolders(olm.FolderHierarchy, string.Empty);
}
private void PrintAllFolders(List<OlmFolder> folderHierarchy, string indent)
{
foreach (var folder in folderHierarchy)
{
Console.WriteLine($"{indent}{folder.Name}");
PrintAllFolders(folder.SubFolders, indent+"-");
}
}

Jika membuka file dengan menggunakan metode FromFile, maka secara default properti FolderHierarchy tidak akan diinisialisasi dan akan mengembalikan null. Dalam kasus ini, perlu secara eksplisit memanggil metode GetFolders:

using (var olm = OlmStorage.FromFile(fileName))
{
var folders = olm.GetFolders();
}

Juga, dimungkinkan untuk mendapatkan folder mana pun berdasarkan nama. Untuk melakukan ini, Anda harus:

  • memanggil metode GetFolder

  • memberikan nama folder sebagai argumen pertama dan nilai, yang menunjukkan apakah mengabaikan sensitivitas huruf besar/kecil saat mencari folder, sebagai parameter kedua.

using (var olm = OlmStorage.FromFile(fileName))
{
// get inbox folder by name
OlmFolder folder = olm.GetFolder("Inbox", true);
}

Daftar email

Kelas OlmFolder, yang mewakili folder, memiliki metode berikut untuk mendapatkan daftar email:

  • EnumerateMessages menerapkan iterasi email dalam folder. Dalam hal ini, setiap iterasi mengembalikan objek OlmMessageInfo, yang memberikan informasi singkat tentang email.

  • EnumerateMapiMessages, juga menerapkan iterasi email dalam folder, tetapi dalam hal ini, setiap iterasi mengembalikan objek MapiMessage, yang mewakili email itu sendiri, dengan semua propertinya.

Menggunakan metode EnumerateMessages

using (var olm = OlmStorage.FromFile(fileName))
{
var folder = olm.GetFolder("Inbox", true);
foreach (var messageInfo in folder.EnumerateMessages())
{
Console.WriteLine(messageInfo.Subject);
}
}

Menggunakan metode EnumerateMapiMessages

using (var olm = OlmStorage.FromFile(fileName))
{
var folder = olm.GetFolder("Inbox", true);
foreach (var msg in folder.EnumerateMapiMessages())
{
// save message in MSG format
msg.Save($"{msg.Subject}.msg");
}
}

Properti berguna lainnya

Juga, kelas OlmFolder memiliki properti HasMessages dan MessageCount, yang mengembalikan keberadaan pesan dalam folder dan jumlahnya:

using (var olm = OlmStorage.FromFile(fileName))
{
var folder = olm.GetFolder("Inbox", true);
if (folder.HasMessages)
{
Console.WriteLine($"Message count: {folder.MessageCount}");
}
}

Mengekstrak email

Kelas OlmStorage memiliki metode ExtractMapiMessage, yang memungkinkan untuk mengekstrak email. Metode ini menerima objek OlmMessageInfo.

using (var olm = OlmStorage.FromFile(fileName))
{
var folder = olm.GetFolder("Inbox", true);
foreach (var messageInfo in folder.EnumerateMessages())
{
if (messageInfo.Date == DateTime.Today)
{
// Extracts today's messages form Inbox
var msg = olm.ExtractMapiMessage(messageInfo);
}
}
}

Kesimpulan

Dalam artikel ini, Anda belajar cara membaca file OLM di C#. Anda telah melihat cara mendapatkan daftar folder dan mengekstrak pesan dari file OLM. Selain itu, Anda dapat mempelajari lebih lanjut tentang Aspose.Email untuk .NET menggunakan dokumentasi. Juga, Anda dapat membagikan pertanyaan atau permintaan Anda di forum.

Lihat Juga