Parse Storage Files

各種電子郵件客戶端和平臺經常導致創建各種電子郵件存儲格式。一方面,這些格式在解析內容時可能會帶來挑戰;另一方面,在存儲數據或在網絡服務失敗時恢復數據方面,它們又是不可或缺的。在本文中,我們將深入探討每種格式,並演示如何利用 Aspose.Email 提取、列出和檢索五種主要檔案格式的電子郵件內容。

C# API 處理存儲檔案

為了處理存儲檔案,我們將使用一個多功能的 API,旨在簡化複雜的電子郵件相關任務和交互,提供全面的電子郵件管理解決方案。 Aspose.Email for .NET 使開發人員能夠創建與多種格式(如 PST、OST、MBOX、EML、MSG 等)無縫交互的應用程序。憑藉其豐富的功能集和用戶友好的方法,對存儲在檔案中的電子郵件數據的操作、提取和管理變得簡單而直觀。要利用該 API 的強大功能,請 下載 其 DLL 或使用以下命令從 NuGet 安裝:

PM> Install-Package Aspose.Email

處理各種類型格式的存儲檔案

閱讀 PST (個人存儲表) 檔案

PST 是 Microsoft Outlook 用來存儲電子郵件、聯絡人、日曆和其他數據的檔案格式。Aspose.Email 通過提供提取和檢索電子郵件、附件和文件夾結構等項目的方法簡化了 PST 檔案的處理。使用該庫,開發人員可以以編程方式訪問 PST 內容,搜索特定項目,並將其導出到多種格式。在下面的代碼示例中,您將看到如何閱讀 PST 格式的檔案:

  1. 首先,使用 PersonalStorage 類的 FromFile 方法加載 PST 檔案。
  2. 使用 PST 對象的 RootFolder 屬性上的 GetSubfolder() 方法訪問 PST 中的“收件箱”文件夾。
  3. 使用文件夾對象上的 EnumerateMessages() 方法遍歷文件夾中的每條消息。
  4. 使用 PST 對象上的 ExtractMessage() 方法提取消息,傳遞每個 msgInfo 對象的 EntryIdString 屬性。
  5. 訪問消息的內容:
    • 使用 msg 對象的 Subject 屬性獲取消息的主題。
    • 使用 msg 對象的 SenderEmailAddress 屬性獲取消息的發件人地址。
    • 使用 msg 對象的 Body 屬性獲取消息的正文。
// Load the PST file
using (var pst = PersonalStorage.FromFile(filename)
{
// Access the desired folder within the PST
var folder = pst.RootFolder.GetSubfolder("Inbox");
// Enumerate and list messages in the folder
foreach(var msgInfo in folder.EnumerateMessages())
{
var msg = pst.ExtractMessage(msgInfo.EntryIdString);
//Access the contents of the message
// Get subject
Console.WriteLine("Subject:" + msg.Subject);
// Get from address
Console.WriteLine("From:" + msg.SenderEmailAddress);
// Get body
Console.WriteLine("Body" + msg.Body);
}
}

閱讀 OST (Outlook 離線存儲表) 檔案

OST 檔案作為 Microsoft Exchange 郵箱數據的離線副本。Aspose.Email 使從 OST 檔案中提取數據成為可能,允許開發人員檢索電子郵件、文件夾和附件。這在創建備份解決方案或在不同平台之間遷移數據時尤為有用。用於解析 OST 檔案的功能集與 PST 相同,因此您可以使用上述代碼示例,指定 OST 檔案的正確路徑。

閱讀 OLM (Outlook for Mac 存檔) 檔案

OLM 是 Microsoft Outlook for Mac 用來存儲電子郵件、聯絡人和其他數據的存儲格式。使用 Aspose.Email,開發人員可以從 OLM 檔案中提取內容,包括電子郵件和附件。該功能對於跨平台數據遷移或創建備份系統非常有價值。以下代碼示例和步驟將向您展示如何利用該 API 解析 Outlook for Mac 檔案:

  1. 創建 OlmStorage 類的實例,並使用構造函數加載 OLM 檔案。
  2. 使用 olm 對象上的 GetFolder() 方法訪問 OLM 中的“收件箱”文件夾,傳遞文件夾名稱為“收件箱”,並指定如果不存在則創建該文件夾。
  3. 使用文件夾對象上的 EnumerateMessages() 方法遍歷文件夾中的每條消息。
  4. 使用 olm 對象上的 ExtractMapiMessage() 方法提取消息,傳遞 msgInfo 對象。
  5. 訪問消息的內容:
    • 使用 msg 對象的 Subject 屬性獲取消息的主題。
    • 使用 msg 對象的 SenderEmailAddress 屬性獲取消息的發件人地址。
    • 使用 msg 對象的 Body 屬性獲取消息的正文。
// Load the OLM file
using (var olm = new OlmStorage(filename))
{
// Access the desired folder within the OLM
var folder = olm.GetFolder("Inbox", true);
// Enumerate and list messages in the folder
foreach (var msgInfo in folder.EnumerateMessages())
{
var msg = olm.ExtractMapiMessage(msgInfo);
//Access the contents of the message
// Get subject
Console.WriteLine("Subject:" + msg.Subject);
// Get from address
Console.WriteLine("From:" + msg.SenderEmailAddress);
// Get body
Console.WriteLine("Body" + msg.Body);
}
}

閱讀 MBOX (郵箱) 檔案

MBOX 是一種廣泛使用的存儲電子郵件消息的格式。許多電子郵件客戶端和平臺都支持它。Aspose.Email 使從 MBOX 檔案中提取和檢索電子郵件和附件成為可能,允許開發人員以編程方式處理電子郵件數據。請嘗試以下代碼片段以解析 mbox 檔案:

  1. 使用 MboxStorageReader 類的 CreateReader() 方法加載 MBOX 檔案,並使用 MboxLoadOptions
  2. 使用 mbox 對象上的 EnumerateMessageInfo() 方法遍歷 mbox 中的每條消息。
  3. 使用 mbox 對象上的 ExtractMessage() 方法從 mbox 中提取消息內容,傳遞 EntryIdEmlLoadOptions
  4. 訪問消息的內容:
    • 使用 eml 對象的 Subject 屬性獲取消息的主題。
    • 使用 eml 對象的 From 屬性獲取消息的發件人地址。
    • 使用 eml 對象的 Body 屬性獲取消息的正文。
// Load the MBOX file
using (var mbox = MboxStorageReader.CreateReader(fileName, mboxLoadOptions))
{
// Enumerate and list messages in the folder
foreach (var msgInfo in mbox.EnumerateMessageInfo())
{
var eml = mbox.ExtractMessage(messageInfo.EntryId, emlLoadOptions);
//Access the contents of the message
// Get subject
Console.WriteLine("Subject:" + eml.Subject);
// Get from address
Console.WriteLine("From:" + eml.From);
// Get body
Console.WriteLine("Body" + eml.Body);
}
}

閱讀 TGZ (壓縮 Tar 存檔) 檔案

TGZ 是一種壓縮檔案格式,通常用於在 Zimbra 電子郵件客戶端中存儲電子郵件備份數據。Aspose.Email 允許從 TGZ 檔案中提取電子郵件內容,使得訪問和操作這些檔案中包含的電子郵件數據成為可能。以下代碼片段和步驟將向您展示如何閱讀 tgz 檔案:

  1. 創建 TgzReader 類的實例,並使用構造函數加載 TGZ 檔案。
  2. 使用文件夾對象上的 ReadNextMessage() 方法遍歷“收件箱”文件夾中的每個項目。
  3. 使用 CurrentMessage 屬性提取每個項目的消息內容。
  4. 對提取的消息內容執行所需的操作。
using (var tgzReader = new TgzReader(fileName))
{
while (reader.ReadNextMessage())
{
if (reader.CurrentDirectory == "Inbox")
{
var eml = reader.CurrentMessage;
//Access the contents of the message
// Get subject
Console.WriteLine("Subject:" + eml.Subject);
// Get from address
Console.WriteLine("From:" + eml.From);
// Get body
Console.WriteLine("Body" + eml.Body);
}
}
}

結論

在本文中,我們探討了如何以編程方式處理最受歡迎格式的存儲檔案。我們的直觀代碼示例向您展示了如何在項目中實現基本功能。使用 Aspose.Email for .NET,現在加載、列出和訪問存儲檔案的內容變得更加簡單。該 API 為您提供了一種無縫集成電子郵件相關功能到您的 .NET 應用程序中的方式。了解更多有關該庫可以為您提供的功能,請參閱我們的 文檔。如果您需要幫助或建議,隨時在我們的 免費支持論壇 上與我們聯繫。

另見