Tạo tin nhắn MIME bằng C#

MIME (Phần mở rộng thư Internet đa năng) là một tiêu chuẩn được sử dụng rộng rãi để định dạng và trao đổi thư điện tử, cũng như các loại nội dung khác qua Internet. Nó cho phép bao gồm nhiều loại phương tiện khác nhau, chẳng hạn như văn bản, hình ảnh, âm thanh và video, trong một email. Trong bài viết này, chúng ta sẽ khám phá cách tạo thông báo EML theo cách lập trình bằng Python. Đến cuối bài viết, bạn sẽ hiểu rõ về cách tạo thư MIME, thêm hình ảnh vào nội dung HTML của email và lưu email ở định dạng EML.

API để tạo tin nhắn MIME bằng Python

Để tạo một thông báo MIME, người ta cần tuân thủ các quy tắc định dạng được chỉ định bởi tiêu chuẩn MIME. Điều này thường liên quan đến việc sử dụng các thư viện hoặc mô-đun thích hợp được cung cấp bởi các ngôn ngữ lập trình, chẳng hạn như Python, để tạo cấu trúc MIME cần thiết. Aspose.Email for Python là một thư viện mạnh mẽ cung cấp nhiều chức năng để tạo, thao tác và xử lý email, giúp các nhà phát triển kết hợp các tác vụ liên quan đến email vào các dự án Python của họ dễ dàng hơn. Nó được thiết kế để hoạt động với nhiều định dạng khác nhau và trên các nền tảng khác nhau. Bạn có thể dễ dàng cài đặt API qua PyPI hoặc tải xuống DLL của nó.

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

Tạo tệp EML từ đầu

Để tạo một email mới, chúng ta sẽ sử dụng lớp MailMessage từ Aspose.Email. Lớp này có tất cả các phương thức và thuộc tính cần thiết để chỉ định người gửi, người nhận, chủ đề và nội dung HTML. Sau đó, tin nhắn được lưu dưới dạng tệp EML có tên “message.eml”.

Quá trình tạo một tệp eml mới có thể được mô tả theo các bước sau:

  • Nhập các lớp cần thiết từ mô-đun aspose.email.
  • Tạo một thể hiện mới của lớp MailMessage bằng hàm tạo mặc định.
  • Đặt các thuộc tính của đối tượng MailMessage theo nhu cầu của bạn: địa chỉ người gửi, địa chỉ người nhận, chủ đề, nội dung HTML, v.v.
  • Xác định cấu trúc và nội dung HTML. Trong ví dụ của chúng tôi, một cấu trúc HTML đơn giản được cung cấp với một tiêu đề và một đoạn văn.
  • Lưu đối tượng MailMessage vào tệp EML bằng phương thức lưu. Trong ví dụ của chúng tôi, tên của tệp sẽ là “message.eml”.

Mẫu mã bên dưới sẽ chỉ cho bạn cách tạo EML từ đầu theo chương trình:

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

# Tạo một thể hiện mới của lớp MailMessage
eml = MailMessage()

# Đặt người gửi và người nhận
eml.from_address = MailAddress("sender@domain.com")
eml.to.append(MailAddress("receiver@receiver.com"))

# Đặt chủ đề và nội dung
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>"""

#  Lưu đối tượng MailMessage vào tệp EML
eml.save("message.eml", SaveOptions.default_eml)

Phương thức lưu của lớp MailMessage có hai tham số: đường dẫn tệp và các tùy chọn lưu. Các tùy chọn lưu chỉ định định dạng của tệp đầu ra.

Thêm hình ảnh vào nội dung HTML

Trong phần này, chúng ta sẽ nhúng một hình ảnh vào email bằng cách sử dụng lớp LinkedResource của cùng một API. Lớp đại diện cho một tài nguyên được nhúng trong một thông báo. Sau đó, chúng tôi sẽ lưu thư dưới dạng tệp EML có tên “messagewithimage.eml”.

Chỉ cần làm theo các bước.

  • Nhập các lớp cần thiết từ mô-đun aspose.email.
  • Tạo một thể hiện mới của lớp MailMessage bằng hàm tạo mặc định.
  • Đặt các thuộc tính của đối tượng MailMessage theo nhu cầu của bạn.
  • Phần thân HTML chứa thẻ hình ảnh có thuộc tính nguồn được đặt thành cid:myImage.
  • Lớp Chế độ xem thay thế được sử dụng để có chế độ xem thay thế cho nội dung thư có chứa hình ảnh được nhúng.
  • Lớp LinkedResource được sử dụng để đại diện cho hình ảnh được nhúng và ID nội dung của nó được đặt thành image1.
  • Cuối cùng, chế độ xem thay thế được thêm vào bộ sưu tập chế độ xem thay thế thông báo.

Hãy thử mẫu mã sau để thêm hình ảnh vào nội dung HTML:

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

# Tạo một thể hiện mới của lớp MailMessage
eml = MailMessage()

# Đặt người gửi và người nhận
eml.from_address = MailAddress("sender@domain.com")
eml.to.append(MailAddress("receiver@receiver.com"))

# Đặt chủ đề và nội dung
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>"""

# Thêm tài nguyên hình ảnh vào chế độ xem thay thế
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)

# Lưu MailMessage dưới dạng tệp EML
eml.save("message_with_image.eml", SaveOptions.default_eml)

Tạo tệp EML từ tệp HTML

Thư viện Aspose.Email dành cho Python cung cấp một cách dễ dàng để tải, sửa đổi và lưu tệp HTML dưới dạng tệp EML. Quá trình chuyển đổi này có thể hữu ích nếu bạn có một HTML mà bạn muốn gửi dưới dạng email. Với mục đích này, chúng ta sẽ sử dụng lớp HtmlLoadOptions. Lớp cho phép chỉ định các tùy chọn bổ sung khi tải MailMessage từ định dạng Html. Đầu tiên, chúng ta cần có nội dung HTML. Trong ví dụ của chúng tôi, nó sẽ là một tệp có tên 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>

Ngoài ra, bạn phải chuẩn bị trước tất cả các hình ảnh chứa HTML và chỉ định đường dẫn chính xác đến chúng trong tệp HTML.

Giờ đây, chúng ta có thể dễ dàng tạo MailMessage bằng cách đặt phần thân HTML từ content.html.

  • Nhập các lớp cần thiết từ mô-đun aspose.email.
  • Tạo một phiên bản của HtmlLoadOptions để chỉ định các tùy chọn tải cho đối tượng tệp HTML.
  • Đặt một chuỗi chứa đường dẫn đến hình ảnh trong thuộc tính pathstoresources.
  • Đặt thuộc tính shouldaddplaintextview thành True nếu EML phải chứa Chế độ xem thay thế với văn bản thuần túy.
  • Tạo phiên bản mới của MailMessage bằng cách tải tệp HTML và chuyển đối tượng HtmlLoadOptions làm tham số.
  • Đặt thuộc tính tin nhắn bổ sung.
  • Cuối cùng, lưu đối tượng MailMessage vào tệp EML bằng phương thức lưu.
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)

#  Đặt người gửi và người nhận
eml.from_address = MailAddress("sender@domain.com")
eml.to = MailAddress("recipient@domain.com")

#  Đặt chủ đề
eml.subject = "New message from HTML"

#  Lưu tin nhắn ở định dạng EML
eml.save("message_from_html.eml", SaveOptions.default_eml)

Mẹo để cải thiện giao diện của thông báo HTML trong Outlook

Khi nói đến việc gửi email HTML, khả năng tương thích với các ứng dụng email khác nhau là rất quan trọng. Đặc biệt, Outlook có công cụ kết xuất khác với hầu hết các trình duyệt web, điều này có thể dẫn đến các vấn đề về định dạng. Dưới đây là một số trong số họ:

  • Outlook có thể không hỗ trợ một số thẻ HTML và thuộc tính CSS thường được sử dụng trong trình duyệt web. Các thành phần như hình nền, số float, lề và phần đệm có thể không hiển thị như mong đợi. Để khắc phục điều này, điều cần thiết là sử dụng các kiểu nội tuyến, bảng hoặc nhận xét có điều kiện để đạt được bố cục và định dạng mong muốn trong Outlook.
  • Outlook có thể giới thiệu các khoảng trắng hoặc đường kẻ bổ sung giữa các thành phần hoặc thậm chí loại bỏ hoàn toàn một số thành phần, làm gián đoạn thiết kế được làm cẩn thận của bạn. Để giảm thiểu điều này, việc sử dụng chiến lược các khoảng trắng không ngắt, khoảng trắng có độ rộng bằng 0 hoặc các ô bảng trống có thể giúp duy trì cấu trúc dự định và ngăn thao tác phần tử không mong muốn trong Outlook.
  • Công cụ kết xuất của Outlook có thể thay đổi mã hóa hoặc bộ ký tự của tệp HTML của bạn, dẫn đến các ký tự bị cắt xén hoặc hiển thị không chính xác. Để đảm bảo hiển thị chính xác, hãy chỉ định rõ ràng mã hóa và bộ ký tự trong HTML của bạn bằng cách sử dụng thẻ meta. Điều này sẽ giúp Outlook diễn giải và hiển thị văn bản một cách chính xác, ngăn ngừa mọi sự cố liên quan đến ký tự.

Phần kết luận

Tóm lại, chúng ta hãy nhớ những vấn đề đã được đề cập trong bài viết này. Bạn đã học cách tạo thông báo MIME theo chương trình trong Python bằng Aspose.Email. Hướng dẫn chi tiết và từng bước của chúng tôi với các mẫu mã làm cho hướng dẫn trở nên dễ đọc và dễ hiểu.

Bằng cách tạo tin nhắn MIME, người gửi email có thể đảm bảo rằng thông tin liên lạc của họ hỗ trợ nhiều loại nội dung và cung cấp trải nghiệm tương tác và hấp dẫn hơn cho người nhận.

  • Bạn có thể khám phá thêm về Aspose.Email for Python và dùng thử miễn phí.
  • Bạn cũng có thể xem thêm các tính năng và chức năng của Aspose.Email trong tài liệu .
  • Câu hỏi của bạn được hoan nghênh trên diễn đàn của chúng tôi.

Xem thêm