
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
- Membuka file format OLM
- Mendapatkan folder
- Daftar email
- Mengekstrak email
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:
menggunakan konstruktor
menggunakan metode statis FromFile
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.