使用 C# 創建 MIME 消息

MIME(多用途互聯網郵件擴展)是一種廣泛使用的標準,用於格式化和交換電子郵件以及互聯網上其他類型的內容。它允許在單個電子郵件中包含各種媒體類型,例如文本、圖像、音頻和視頻。在本文中,我們將探討如何在 Python 中以編程方式創建 EML 消息。讀完本文後,您將清楚地了解如何創建 MIME 消息、將圖像添加到電子郵件的 HTML 內容以及將電子郵件保存為 EML 格式。

在 Python 中創建 MIME 消息的 API

要創建 MIME 消息,需要遵守 MIME 標準指定的格式規則。這通常涉及使用編程語言(例如 Python)提供的適當庫或模塊來生成必要的 MIME 結構。 Aspose.Email for Python 是一個功能強大的庫,提供了用於創建、操作和處理電子郵件的廣泛功能,使開發人員可以更輕鬆地將與電子郵件相關的任務合併到他們的 Python 項目中。它旨在支持各種格式和跨不同平台。您可以通過 PyPI下載 其 DLL 輕鬆安裝 API。

> pip install Aspose.Email-for-Python-via-NET

從頭開始創建 EML 文件

要創建新電子郵件,我們將使用 Aspose.Email 中的 MailMessage 類。該類具有指定發件人、收件人、主題和 HTML 正文所需的所有方法和屬性。然後,該消息將保存為名為“message.eml”的 EML 文件。

創建新的 eml 文件的過程可以按以下步驟描述:

  • 從 aspose.email 模塊導入所需的類。
  • 使用默認構造函數創建 MailMessage 類的新實例。
  • 根據需要設置 MailMessage 對象的屬性:發件人地址、收件人地址、主題、HTML 正文等。
  • 定義 HTML 結構和內容。在我們的示例中,提供了一個簡單的 HTML 結構,其中包含標題和段落。
  • 使用 save 方法將 MailMessage 對象保存到 EML 文件。在我們的示例中,文件的名稱為“message.eml”。

下面的代碼示例將向您展示如何以編程方式從頭開始創建 EML:

from aspose.email import MailMessage, MailAddress, LinkedResource, SaveOptions

# 創建 MailMessage 類的新實例
eml = MailMessage()

# 設置發件人和收件人
eml.from_address = MailAddress("sender@domain.com")
eml.to.append(MailAddress("receiver@receiver.com"))

# 設置主題和正文
eml.subject = "New message with image"
eml.html_body = """<!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>"""

#  將 MailMessage 對象保存到 EML 文件
eml.save("message.eml", SaveOptions.default_eml)

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

將圖像添加到 HTML 內容

在本節中,我們將使用同一 API 的 LinkedResource 類在電子郵件中嵌入圖像。該類表示消息中的嵌入資源。然後,我們將消息保存為名為“messagewithimage.eml”的 EML 文件。

只需按照步驟操作即可。

  • 從 aspose.email 模塊導入所需的類。
  • 使用默認構造函數創建 MailMessage 類的新實例。
  • 根據需要設置 MailMessage 對象的屬性。
  • HTML 正文包含一個圖像標籤,其源屬性設置為“cid:myImage”。
  • AlternateView 類用於獲取包含嵌入圖像的消息正文的備用視圖。
  • LinkedResource 類用於表示嵌入圖像,其內容 ID 設置為“image1”。
  • 最後,備用視圖被添加到消息備用視圖集合中。

嘗試使用以下代碼示例將圖像添加到 HTML 內容:

from aspose.email import MailMessage, MailAddress, LinkedResource, SaveOptions
from aspose.email.mime import MediaTypeNames

# 創建 MailMessage 類的新實例
eml = MailMessage()

# 設置發件人和收件人
eml.from_address = MailAddress("sender@domain.com")
eml.to.append(MailAddress("receiver@receiver.com"))

# 設置主題和正文
eml.subject = "New message with image"
eml.html_body = """<!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>"""

# 將圖像資源添加到備用視圖
for alternate_view in eml.alternate_views:
    if alternate_view.content_type.media_type == "text/html":
        image_resource = LinkedResource("image.png", "image/png")
        image_resource.content_id = "myImage"
        alternate_view.linked_resources.append(image_resource)

# 將 MailMessage 保存為 EML 文件
eml.save("message_with_image.eml", SaveOptions.default_eml)

從 HTML 文件創建 EML 文件

Python 的 Aspose.Email 庫提供了一種簡單的方法來加載、修改 HTML 文件並將其另存為 EML 文件。如果您想將 HTML 作為電子郵件發送,則此轉換過程會很有用。 為此,我們將使用 HtmlLoadOptions 類。該類允許在從 Html 格式加載 MailMessage 時指定其他選項。首先,我們需要有 HTML 內容。在我們的示例中,它將是一個名為“content.html”的文件。

<!DOCTYPE html>
<html>
<head>
	<title>My Email</title>
</head>
<body>
	<h1>Hello,</h1>
	<img src="logo.png" alt="Logo">
	<p>This is my first email created form HTML.</p>
</body>
</html>

另外,您必須提前準備好所有包含 HTML 的圖像,並在 HTML 文件中指定它們的正確路徑。

現在,我們可以通過設置“content.html”中的 HTML 正文來輕鬆創建 MailMessage。

  • 從 aspose.email 模塊導入所需的類。
  • 創建 HtmlLoadOptions 的實例以指定 HTML 文件對象的加載選項。
  • 在 pathtoresources 屬性中設置包含圖像路徑的字符串。
  • 如果 EML 應包含純文本的 AlternateView,則將 shouldaddplaintextview 屬性設置為 True。
  • 通過加載 HTML 文件並將 HtmlLoadOptions 對像作為參數傳遞來創建 MailMessage 的新實例。
  • 設置附加消息屬性。
  • 最後,使用 save 方法將 MailMessage 對象保存到 EML 文件中。
from aspose.email import HtmlLoadOptions, MailAddress, MailMessage, SaveOptions

htmlloadOptions = HtmlLoadOptions()
htmlloadOptions.path_to_resources = path
htmlloadOptions.should_add_plain_text_view = True
eml = MailMessage.load(path + str(r"content.html"), htmlloadOptions)

#  設置發件人和收件人
eml.from_address = MailAddress("sender@domain.com")
eml.to = MailAddress("recipient@domain.com")

#  設定主題
eml.subject = "New message from HTML"

#  將消息保存為 EML 格式
eml.save("message_from_html.eml", SaveOptions.default_eml)

改進 Outlook 中 HTML 消息的視圖的提示

在發送 HTML 電子郵件時,與不同電子郵件客戶端的兼容性至關重要。尤其是 Outlook,其渲染引擎與大多數 Web 瀏覽器不同,這可能會導致格式問題。這裡是其中的一些:

  • Outlook 可能不支持 Web 瀏覽器中常用的某些 HTML 標記和 CSS 屬性。背景圖像、浮動、邊距和填充等元素可能無法按預期呈現。為了克服這個問題,必須利用內聯樣式、表格或條件註釋在 Outlook 中實現所需的佈局和格式。
  • Outlook 可能會在元素之間引入額外的空格或線條,甚至完全刪除某些元素,從而破壞您精心設計的設計。為了緩解這種情況,策略性地使用不間斷空格、零寬度空格或空表格單元格可以幫助維護預期的結構並防止 Outlook 中不必要的元素操作。
  • Outlook 的呈現引擎可能會更改 HTML 文件的編碼或字符集,從而導致出現亂碼或錯誤顯示的字符。為了確保正確呈現,請使用元標記在 HTML 中顯式指定編碼和字符集。這將幫助 Outlook 準確地解釋和顯示文本,防止出現任何與字符相關的問題。

結論

總而言之,讓我們記住本文討論了哪些問題。您已經學習瞭如何使用 Aspose.Email 在 Python 中以編程方式創建 MIME 消息。我們帶有代碼示例的詳細分步說明使本教程具有可讀性且易於理解。

通過創建 MIME 消息,電子郵件發件人可以確保他們的通信支持廣泛的內容類型,並為收件人提供更具吸引力和交互性的體驗。

  • 您可以探索有關 Aspose.Email for Python 的更多信息並免費試用。
  • 您還可以在 文檔 中查看 Aspose.Email 的更多特性和功能。
  • 歡迎您在我們的論壇上提出問題。

也可以看看