使用 C# 創建 MIME 消息

在發送電子郵件時,您可能需要發送多媒體內容,如圖像、音頻和視頻。這就是 MIME(多用途互聯網郵件擴展)消息派上用場的地方。在本文中,我們將探討如何以編程方式創建 EML 消息。在文章結束時,您將了解 如何創建 MIME 消息,將圖像添加到電子郵件的 HTML 內容中並將電子郵件保存為 EML 格式

.NET API 創建 MIME 消息

在您創建第一個 MIME 消息之前,第一步是將 Aspose.Email for .NET 安裝到您的項目中。這是一個強大的 C# 開發者庫,提供了一套全面的工具,用於處理電子郵件消息,包括以編程方式創建 MIME 消息的能力。該庫幫助開發者輕鬆操作 MIME 消息的各個方面,例如附件、主體、標頭、編碼等。 您可以通過 NuGet 安裝庫或 下載 其 DLL。

PM> Install-Package Aspose.Email

從頭開始創建 EML 文件

既然您的 API 已經安裝好了,是時候從頭開始創建您的第一個 eml。最簡單的方式之一是使用 Aspose.Email 的 MailMessage 類。MailMessage 類允許您創建一個電子郵件消息對象,具有各種屬性和方法,可以讓您設置發件人、收件人、主題、主體、附件、標頭和電子郵件的其他詳細信息。

以下步驟和代碼片段將幫助您從頭開始創建 EML:

  • 使用默認構造函數創建一個新的 MailMessage 對象。
  • 根據您的需求設置 MailMessage 對象的屬性。
  • 使用 Save 方法將 MailMessage 對象保存為 EML 文件。
// Create a new MailMessage object
var eml = new MailMessage()
{
// Set the sender address
From = "sender@sender.com",
// Add a recipient address
To = "receiver@receiver.com",
// Set the subject
Subject = "New message",
// Set the HTML body
HtmlBody = @"<!DOCTYPE html>
<html>
<head>
<style>
h3{font-family:Verdana, sans-serif;color:#000000;background-color:#ffffff;}
p {font-family:Verdana, sans-serif;font-size:14px;font-style:normal;
font-weight:normal;color:#000000;background-color:#ffffff;}
</style>
</head>
<body>
<h3>New message</h3>
<p>This is a new message created by Aspose.Email.</p>
</body>
</html>"
};
// Save the MailMessage object to an EML file
eml.Save("message.eml", SaveOptions.DefaultEml);

MailMessage 類的 Save 方法接受兩個參數:文件路徑和保存選項。保存選項指定輸出文件的格式。

將圖像添加到 HTML 內容

要執行此功能,您需要將圖像嵌入到 HTML 主體中。您可以使用 “img” 標籤來實現這一點。

以下代碼片段顯示了如何將圖像添加到消息的 HTML 主體中。

  • HTML 主體包含一個圖像標籤,其源屬性設置為 cid:image1
  • 使用 AlternateView 類獲取包含嵌入圖像的消息主體的替代視圖。
  • 使用 LinkedResource 類表示嵌入的圖像,其內容 ID 設置為 image1
  • 最後,將替代視圖添加到消息的替代視圖集合中。
// Create a new instance of MailMessage class
var eml = new MailMessage
{
// Set sender and recipient
From = new MailAddress("sender@domain.com"),
To = new MailAddress("recipient@domain.com"),
// Set subject and body
Subject = "New message with image",
HtmlBody = @"<!DOCTYPE html>
<html>
<head>
<style>
h3{font-family:Verdana, sans-serif;color:#000000;background-color:#ffffff;}
p {font-family:Verdana, sans-serif;font-size:14px;font-style:normal;
font-weight:normal;color:#000000;background-color:#ffffff;}
</style>
</head>
<body>
<h3>New message</h3>
<p>This is a new message created by Aspose.Email.</p>
<img src='cid:myImage' />
</body>
</html>"
};
var alternateView = eml.AlternateViews.GetView(MediaTypeNames.Text.Html);
var imageResource = new LinkedResource(path + "image.png", MediaTypeNames.Image.Png)
{
ContentId = "image1"
};
alternateView.LinkedResources.Add(imageResource);
eml.Save("message_with_image.eml", SaveOptions.DefaultEml);

從 HTML 文件創建 EML 文件

其中一種方法是從 HTML 文件開始並將其轉換為 EML。如果您有一個要作為電子郵件消息發送的 HTML,這可能很有用。 為此,我們首先需要擁有 HTML 內容。讓我們稱這個文件為 content.html。以下是它的示例:

<!DOCTYPE html>
<html>
<head>
	<title>我的電子郵件</title>
</head>
<body>
	<h1>你好,</h1>
	<img src="logo.png" alt="標誌">
	<p>這是我用 HTML 創建的第一封電子郵件。</p>
</body>
</html>

此外,您必須事先準備好所有包含在 HTML 中的圖像,並在 HTML 文件中指定正確的路徑。

現在,我們可以輕鬆地創建一個 MailMessage,通過從 content.html 設置 HTML 主體。

  • 首先,創建一個新的 HtmlLoadOptions 對象。
  • PathToResources 中設置包含圖像路徑的字符串。
  • 如果 EML 應包含帶有純文本的 AlternateView,則將 ShouldAddPlainTextView 屬性設置為 true。
  • 通過加載 HTML 文件並將 HtmlLoadOptions 對象作為參數傳遞來創建 MailMessage 對象。
  • 設置其他消息屬性。
  • 最後,使用 Save 方法將 MailMessage 對象保存為 EML 文件。
var htmlloadOptions = new HtmlLoadOptions
{
PathToResources = path,
ShouldAddPlainTextView = true
};
var eml = MailMessage.Load(path + @"content.html", htmlloadOptions);
// Set sender and recipient
eml.From = new MailAddress("sender@domain.com");
eml.To = new MailAddress("recipient@domain.com");
// Set subject
eml.Subject = "New message from HTML";
// Save the message in EML format
eml.Save("message_from_html.eml", SaveOptions.DefaultEml);

改善 Outlook 中 HTML 消息顯示的提示

要在 Outlook 中查看您的 HTML 消息,您需要確保其代碼與 Outlook 渲染引擎兼容,這與大多數網頁瀏覽器不同。影響 Outlook 中 HTML 電子郵件的一些常見問題包括:

  • Outlook 不支持某些標籤和 CSS 屬性,例如背景圖像、浮動、邊距、填充等。您可能需要使用內聯樣式、表格或條件註釋來實現所需的佈局和格式。
  • Outlook 可能會在元素之間添加多餘的空格或行,或完全刪除某些元素。您可能需要使用不斷行空格、零寬度空格或空表格單元格來防止這種情況。
  • Outlook 可能會更改 HTML 文件的編碼或字符集,這可能導致某些字符顯示不正確。您可能需要使用 meta 標籤指定編碼和字符集。

結論

在這篇博文中,您學會了如何使用 Aspose.Email 在 C# 中以編程方式創建 MIME 消息。逐步教程和代碼示例顯示了如何從頭開始和從 HTML 文件創建 EML 文件,將圖像添加到電子郵件消息的 HTML 內容中,並提供了有用的提示,幫助您改善 HTML 消息在 Outlook 中的顯示。

  • 您可以深入了解 Aspose.Email for .NET 並免費試用。
  • 您還可以查看 文件 中 Aspose.Email 的更多功能和功能。
  • 歡迎您在我們的 論壇 提問。

另見