C# を使用して MIME メッセージを作成する

MIME (MultiPurpose Internet Mail Extensions) は、インターネット上で電子メール メッセージや他の種類のコンテンツをフォーマットおよび交換するために広く使用されている標準です。これにより、テキスト、画像、オーディオ、ビデオなどのさまざまなメディア タイプを 1 つの電子メール メッセージ内に含めることができます。この記事では、Python でプログラムによって EML メッセージを作成する方法を検討します。この記事を最後まで読むと、MIME メッセージの作成方法、電子メールの HTML コンテンツへの画像の追加方法、電子メールを EML 形式で保存する方法が明確に理解できるようになります。

Python で MIME メッセージを作成する API

MIME メッセージを作成するには、MIME 標準で指定されたフォーマット規則に従う必要があります。これには通常、Python などのプログラミング言語によって提供される適切なライブラリまたはモジュールを使用して、必要な MIME 構造を生成することが含まれます。 Aspose.Email for Python は、電子メール メッセージを作成、操作、処理するための幅広い機能を提供する強力なライブラリであり、開発者が電子メール関連のタスクを Python プロジェクトに組み込むことが容易になります。さまざまなフォーマットおよびさまざまなプラットフォームで動作するように設計されています。 API は PyPI またはその DLL を ダウンロード して簡単にインストールできます。

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

EML ファイルを最初から作成する

新しい電子メール メッセージを作成するには、Aspose.Email の MailMessage クラスを使用します。このクラスには、送信者、受信者、件名、HTML 本文を指定するために必要なメソッドとプロパティがすべて含まれています。その後、メッセージは「message.eml」という名前の EML ファイルとして保存されます。

新しい eml ファイルを作成するプロセスは、次の手順で説明できます。

  • aspose.email モジュールから必要なクラスをインポートします。
  • デフォルトのコンストラクターを使用して、MailMessage クラスの新しいインスタンスを作成します。
  • 送信者のアドレス、受信者のアドレス、件名、HTML 本文など、必要に応じて MailMessage オブジェクトのプロパティを設定します。
  • 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 メソッドは、ファイル パスと保存オプションの 2 つのパラメータを取ります。保存オプションでは、出力ファイルの形式を指定します。

HTML コンテンツに画像を追加する

このセクションでは、同じ API の LinkedResource クラスを使用して、電子メールに画像を埋め込みます。このクラスは、メッセージ内の埋め込みリソースを表します。次に、メッセージを「messagewithimage.eml」という名前の EML ファイルとして保存します。

手順に従ってください。

  • aspose.email モジュールから必要なクラスをインポートします。
  • デフォルトのコンストラクターを使用して、MailMessage クラスの新しいインスタンスを作成します。
  • 必要に応じて、MailMessage オブジェクトのプロパティを設定します。
  • HTML 本文には、source 属性が 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 メッセージを作成することにより、電子メール送信者は、通信で幅広い種類のコンテンツをサポートし、受信者により魅力的でインタラクティブなエクスペリエンスを提供できるようになります。

関連項目