
HTML 是一種廣泛使用且易於訪問的格式,可以在各種平台、網頁瀏覽器中查看,包括桌面計算機和移動設備。相比之下,EML 和 MSG 文件可能需要特定的軟件或電子郵件客戶端來查看,這可能會隨著時間的推移使其更難以訪問和查看。因此,將 MSG 或 EML 文件轉換為 HTML 使其更易於查看,特別是對於可能沒有兼容電子郵件客戶端或軟件的收件人。
此外,HTML 文件更易於存檔,並保持可搜索、索引的格式。
本文介紹了一個 算法,可以快速輕鬆地使用 C# 將 MSG 或 EML 文件轉換為 HTML 格式,無論其底層目的為何。 我們可靠的方法保證了電子郵件的內容,包括嵌入的圖片,完全保留而不會丟失。這確保了電子郵件在整個轉換過程中保持完整性。
本文涵蓋以下主題:
- C# API 將 EML/MSG 文件轉換為 HTML
- 將 EML/MSG 文件轉換為 HTML,將圖片單獨保存
- 將 EML/MSG 文件轉換為 HTML,將圖片保存到 HTML 內部
- 帶標頭的 HTML 保存
C# API 將 EML/MSG 文件轉換為 HTML
要將 EML/MSG 文件轉換為 HTML,我們將使用 Aspose.Email for .NET。這是一個電子郵件處理 API,讓您可以操作電子郵件並處理流行電子郵件客戶端(如 Thunderbird、Outlook 等)的文件格式。您可以 下載 API 的 DLL 或使用以下命令從 NuGet 安裝它:
PM> Install-Package Aspose.Email
將 EML/MSG 文件轉換為 HTML,將圖片單獨保存
一個典型的 MSG 文件具有以下視圖:

使用我們的 API,您可以在設備上設置任何目錄,並將目標 HTML 文件與圖片保存在單獨的文件夾中:

使用以下代碼示例將 MSG 或 EML 格式的電子郵件消息轉換為 HTML 文件,圖片將保存到目標目錄中。 代碼執行以下步驟:
- 首先,分別指定源 MSG/EML 文件和 HTML 文件的源路徑和目標路徑,以及資源的目標目錄。
- 使用 MailMessage.Load 方法加載 MSG 或 EML 文件。
- 創建 HtmlSaveOptions 對象並將 ResourceRenderingMode 屬性設置為 SaveToFile。
- 定義 HtmlSaveOptions 的 SaveResourceHandler 事件的委託。
- 如果委託內的資源目標目錄尚不存在,則創建它。
- 根據資源的內容類型,在委託內將每個資源保存到文件中,並指定文件名。
- 調用 MailMessage 實例的 Save 方法,傳遞目標 HTML 文件名和 HtmlSaveOptions 實例以將電子郵件以 HTML 格式保存。
// MSG or EML filename | |
var msgFileName = Path.Combine(sourcePath, "A Day in the Park.msg"); | |
// target HTML | |
var htmlFileName = Path.Combine(targetPath, "A Day in the Park.html"); | |
// target directory to save images | |
var resourceDir = Path.Combine(targetPath, "A Day in the Park"); | |
// Load MSG or EML | |
var msg = MailMessage.Load(msgFileName); | |
// Create HTML save options | |
var htmlSaveOptions = new HtmlSaveOptions | |
{ | |
ResourceRenderingMode = ResourceRenderingMode.SaveToFile | |
}; | |
htmlSaveOptions.SaveResourceHandler += | |
(AttachmentBase attachment, out string resourceFileName) => | |
{ | |
if (!Directory.Exists(resourceDir)) | |
{ | |
Directory.CreateDirectory(resourceDir); | |
} | |
resourceFileName = Path.Combine(resourceDir, attachment.ContentType.Name); | |
attachment.Save(resourceFileName); | |
}; | |
msg.Save(htmlFileName, htmlSaveOptions); |
將 EML/MSG 文件轉換為 HTML,將圖片保存到 HTML 內部
有時,您可能希望將 EML/MSG 文件轉換為 HTML,並將嵌入的圖片保留在 HTML 中。

以下代碼片段演示了如何在 C# 中將 MSG 或 EML 文件轉換為 HTML 格式並將圖片保存到 HTML 內部。代碼執行以下步驟:
- 定義電子郵件文件和 HTML 輸出的源路徑和目標路徑。
- 使用 MailMessage.Load 方法加載 MSG 或 EML 文件。
- 創建 HtmlSaveOptions 類的新實例,這使您可以配置電子郵件如何保存為 HTML。
- 配置 HtmlSaveOptions 實例以將資源(包括圖片)直接嵌入 HTML 中。
- 調用 MailMessage 實例的 Save 方法,傳遞目標 HTML 文件名和 HtmlSaveOptions 實例以將電子郵件以 HTML 格式保存。
// MSG or EML filename | |
var msgFileName = Path.Combine(sourcePath, "A Day in the Park.msg"); | |
// target HTML | |
var htmlFileName = Path.Combine(targetPath, "A Day in the Park.html"); | |
// Load MSG or EML | |
var msg = MailMessage.Load(msgFileName); | |
// Create HTML save options | |
var htmlSaveOptions = new HtmlSaveOptions | |
{ | |
ResourceRenderingMode = ResourceRenderingMode.EmbedIntoHtml | |
}; | |
msg.Save(htmlFileName, htmlSaveOptions); |
帶標頭的 HTML 保存
作為可選變體,您可以保存帶標頭的 HTML。以下代碼片段演示了如何在 C# 中保存帶標頭的 HTML:
// Create HTML save options | |
var htmlSaveOptions = new HtmlSaveOptions | |
{ | |
ResourceRenderingMode = ResourceRenderingMode.EmbedIntoHtml, | |
HtmlFormatOptions = HtmlFormatOptions.WriteHeader | |
}; |
結果,文本標頭將添加到目標 HTML 中:

結論
總結來說,通過本文,您剛剛學到了 HTML 格式在存檔和管理文件中的便利性,以及如何使用 Aspose.Email for .NET 庫在 C# 中執行從 EML 或 MSG 的轉換。您可以看到,轉換過程是多麼快捷和簡單,只需幾行代碼。如果您有任何問題,隨時寫信給我們的 免費支持論壇。您還可以從我們的 文檔 中了解到更多關於 Aspose.Email for .NET 的功能和設施。