
OLM Microsoft Outlook for Mac’in yerel verileri depolamak için kullandığı bir dosya formatıdır. OLM, e-postalar, ekler, notlar, takvim verileri, kişiler, görevler, geçmiş vb. gibi yerel verileri içerir. OLM dosyaları, Outlook for Mac tarafından kullanılır. Outlook for Windows, bu dosyalara erişemez veya açamaz. Outlook for Windows sürümü, verileri depolamak için yalnızca PST dosya formatını destekler. Bu makalede C# uygulamalarından OLM formatındaki dosyaları nasıl açıp okuyacağımızı ele alacağız.
- C# .NET OLM Dosyalarını Okuma API’si
- OLM formatındaki dosyaların açılması
- Klasörleri alma
- E-posta listesi
- E-postaları çıkarma
C# .NET OLM Dosyalarını Okuma API’si
Aspose.Email for .NET, e-posta uygulamalarını uygulamak için bir dizi özellik sunan güçlü bir API’dir. Ayrıca, OLM dosyalarını ve MBOX, PST/OST gibi diğer e-posta depolama formatlarını okumaya olanak tanır. Kitaplığı NuGet üzerinden kurabilir veya DLL’sini indirebilirsiniz.
PM> Install-Package Aspose.Email
OLM formatındaki dosyaların açılması
Aspose.Email API, OLM formatındaki dosyaları açmanın iki yolunu sunar:
Bu yöntemler arasında davranış farklılıkları vardır. Aşağıdaki bölüme bakın.
Yapıcı ile dosya açma
Bir dosya açmak için, OlmStorage sınıfının yapıcısını çağırmalı ve tam dosya adını veya akışı bir argüman olarak geçmelisiniz:
var fileName = "MyStorage.olm"; | |
var olm = new OlmStorage(fileName); |
FromFile statik yöntemi kullanarak dosya açma
Dosyayı açmak için, statik FromFile yöntemini kullanmalı ve tam dosya adını veya akışı bir argüman olarak geçmelisiniz:
var fileName = "MyStorage.olm"; | |
var olm = OlmStorage.FromFile(fileName); |
Klasörleri alma
Yapıcı kullanarak dosyayı açtıktan sonra, FolderHierarchy özelliğine erişilebilir. Bu, OLM dosyasında mevcut olan dizinlerin bir listesini döndürür. Liste içindeki her OlmFolder nesnesinin SubFolders özelliği vardır ve bu da alt klasörlerin bir listesini döndürür. Böylece OLM’deki tüm dizinlere erişimimiz olur.
Aşağıdaki örnek, tüm klasörlerin hiyerarşik sırayla listesini gösterir:
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+"-"); | |
} | |
} |
FromFile yöntemini kullanarak dosyayı açıyorsanız, varsayılan olarak FolderHierarchy özelliği başlatılmayacak ve null
döndürecektir. Bu durumda, açıkça GetFolders yöntemini çağırmak gereklidir:
using (var olm = OlmStorage.FromFile(fileName)) | |
{ | |
var folders = olm.GetFolders(); | |
} |
Ayrıca, herhangi bir klasörü adıyla almak mümkündür. Bunu yapmak için:
GetFolder yöntemini çağırın
klasör adını birinci argüman olarak ve bir klasörü ararken büyük/küçük harf duyarlılığını göz ardı edip etmeyeceğinizi ikinci parametre olarak geçin.
using (var olm = OlmStorage.FromFile(fileName)) | |
{ | |
// get inbox folder by name | |
OlmFolder folder = olm.GetFolder("Inbox", true); | |
} |
E-posta listesi
OlmFolder sınıfı, klasörün e-posta listesini almak için aşağıdaki yöntemlere sahiptir:
EnumerateMessages, bir klasördeki e-postaları yinelemeyi uygular. Bu durumda, her yineleme OlmMessageInfo nesnesini döndürür ve bu nesne, e-posta hakkında kısa bir bilgi sağlar.
EnumerateMapiMessages de bir klasördeki e-postaları yinelemeyi uygular, ancak bu durumda, her yineleme MapiMessage nesnesini döndürür ve bu nesne e-postayı, tüm özellikleriyle temsil eder.
EnumerateMessages yöntemini kullanma
using (var olm = OlmStorage.FromFile(fileName)) | |
{ | |
var folder = olm.GetFolder("Inbox", true); | |
foreach (var messageInfo in folder.EnumerateMessages()) | |
{ | |
Console.WriteLine(messageInfo.Subject); | |
} | |
} |
EnumerateMapiMessages yöntemini kullanma
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"); | |
} | |
} |
Diğer yararlı özellikler
Ayrıca, OlmFolder sınıfı, klasördeki mesajların varlığını ve sayısını döndüren HasMessages ve MessageCount özelliklerine sahiptir:
using (var olm = OlmStorage.FromFile(fileName)) | |
{ | |
var folder = olm.GetFolder("Inbox", true); | |
if (folder.HasMessages) | |
{ | |
Console.WriteLine($"Message count: {folder.MessageCount}"); | |
} | |
} |
E-postaları çıkarma
OlmStorage sınıfı, e-posta çıkarmayı sağlayan ExtractMapiMessage yöntemine sahiptir. Bu yöntem, bir OlmMessageInfo nesnesi alır.
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); | |
} | |
} | |
} |
Sonuç
Bu makalede, C# ile OLM dosyalarını nasıl okuyacağınızı öğrendiniz. Klasörlerin listesini almanın ve OLM dosyasından mesajları çıkarmanın yollarını gördünüz. Ayrıca, Aspose.Email for .NET hakkında daha fazla bilgi edinmek için belgelere göz atabilirsiniz. Sorularınızı veya isteklerinizi bizim forumda paylaşabilirsiniz.