
OLM یک فرمت فایل است که Microsoft Outlook برای Mac از آن برای ذخیره دادههای محلی استفاده میکند. OLM شامل دادههای محلی مانند ایمیلها، پیوستها، یادداشتها، دادههای تقویم، مخاطبین، وظایف، تاریخچه و غیره است. فایلهای OLM توسط Outlook برای Mac استفاده میشوند. Outlook برای ویندوز نمیتواند به آن دسترسی پیدا کند یا آن را باز کند. نسخه Outlook برای ویندوز فقط از فرمت فایل PST برای ذخیره دادهها پشتیبانی میکند. در این مقاله ما به بررسی چگونه فایلهای فرمت OLM را از برنامههای C# باز و بخوانیم خواهیم پرداخت.
C# .NET API to Read OLM Files
Aspose.Email for .NET یک API قدرتمند است که مجموعهای از ویژگیها را برای پیادهسازی برنامههای ایمیل ارائه میدهد. همچنین، این API امکان خواندن فایلهای OLM و دیگر فرمتهای ذخیرهسازی ایمیل مانند MBOX و PST/OST را نیز فراهم میکند. شما میتوانید کتابخانه را از طریق NuGet نصب کنید یا DLL آن را دانلود کنید.
PM> Install-Package Aspose.Email
Opening OLM format files
Aspose.Email API دو روش برای باز کردن فایلهای فرمت OLM معرفی میکند:
استفاده از constructor
استفاده از روش استاتیک FromFile
در این روشها تفاوتهایی در رفتار وجود دارد. به بخش زیر مراجعه کنید.
Opening file by constructor
برای باز کردن یک فایل، شما باید constructor کلاس OlmStorage را فراخوانی کنید و نام کامل فایل یا استریم را به عنوان آرگومان به آن پاس دهید:
var fileName = "MyStorage.olm"; | |
var olm = new OlmStorage(fileName); |
Opening file using static method FromFile
برای باز کردن فایل باید از روش استاتیک FromFile استفاده کنید و نام کامل فایل یا استریم را به عنوان آرگومان به آن پاس دهید:
var fileName = "MyStorage.olm"; | |
var olm = OlmStorage.FromFile(fileName); |
Getting folders
بعد از باز کردن فایل با استفاده از constructor، ویژگی FolderHierarchy قابل دسترسی خواهد بود. این ویژگی لیستی از دایرکتوریها که در فایل OLM وجود دارد را باز میگرداند. هر شی از کلاس OlmFolder در این لیست دارای ویژگی SubFolders است که لیستی از زیرپوشهها را باز میگرداند. بنابراین، ما به تمام دایرکتوریها در OLM دسترسی داریم.
مثال زیر لیست تمام پوشهها را به صورت سلسلهمراتبی نمایش میدهد:
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 باز کنید، در این صورت به طور پیشفرض ویژگی FolderHierarchy مقداردهی اولیه نمیشود و null
باز میگرداند. در این حالت، لازم است که به طور صریح روش GetFolders را فراخوانی کنید:
using (var olm = OlmStorage.FromFile(fileName)) | |
{ | |
var folders = olm.GetFolders(); | |
} |
همچنین، ممکن است هر پوشه را با نام آن بدست آورید. برای این کار باید:
روش GetFolder را فراخوانی کنید
نام پوشه را به عنوان اولین آرگومان و مقداری که نشاندهنده این است که آیا هنگام جستجوی پوشه حساسیت به حروف بزرگ و کوچک نادیده گرفته شود یا خیر، به عنوان پارامتر دوم پاس دهید.
using (var olm = OlmStorage.FromFile(fileName)) | |
{ | |
// get inbox folder by name | |
OlmFolder folder = olm.GetFolder("Inbox", true); | |
} |
List of emails
کلاس OlmFolder که نمایانگر پوشه است، روشهای زیر را برای دریافت لیست ایمیلها دارد:
EnumerateMessages پیادهسازی تکرار ایمیلها در یک پوشه را انجام میدهد. در این حالت، هر تکرار یک شی OlmMessageInfo را باز میگرداند که اطلاعات مختصری درباره ایمیل فراهم میکند.
EnumerateMapiMessages نیز پیادهسازی تکرار ایمیلها در یک پوشه را انجام میدهد، اما در این حالت، هر تکرار یک شی MapiMessage را باز میگرداند که نمایانگر خود ایمیل با تمام ویژگیها میباشد.
Using EnumerateMessages method
using (var olm = OlmStorage.FromFile(fileName)) | |
{ | |
var folder = olm.GetFolder("Inbox", true); | |
foreach (var messageInfo in folder.EnumerateMessages()) | |
{ | |
Console.WriteLine(messageInfo.Subject); | |
} | |
} |
Using EnumerateMapiMessages method
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"); | |
} | |
} |
Other useful properties
همچنین، کلاس OlmFolder دارای ویژگیهای HasMessages و MessageCount است که وجود پیامها در پوشه و تعداد آنها را باز میگرداند:
using (var olm = OlmStorage.FromFile(fileName)) | |
{ | |
var folder = olm.GetFolder("Inbox", true); | |
if (folder.HasMessages) | |
{ | |
Console.WriteLine($"Message count: {folder.MessageCount}"); | |
} | |
} |
Extracting emails
کلاس OlmStorage دارای روش ExtractMapiMessage است که امکان استخراج ایمیل را فراهم میکند. این روش یک شی 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); | |
} | |
} | |
} |
Conclusion
در این مقاله، شما یاد گرفتید که چگونه فایلهای OLM را در C# بخوانید. شما راههای بدست آوردن لیست پوشهها و استخراج پیامها از فایل OLM را مشاهده کردید. علاوه بر این، میتوانید اطلاعات بیشتری درباره Aspose.Email for .NET با استفاده از مستندات کسب کنید. همچنین، میتوانید سوالات یا درخواستهای خود را در فروم ما به اشتراک بگذارید.