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

メールを送信する際には、画像、音声、動画などのマルチメディアコンテンツを送信する必要があるかもしれません。これがMIME(Multipurpose Internet Mail Extensions)メッセージの出番です。この記事では、C#でプログラム的に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を作成する時が来ました。最も簡単な方法の1つは、Aspose.EmailのMailMessageクラスを使用することです。MailMessageクラスを使用すると、送信者、受信者、件名、本文、添付ファイル、ヘッダーなど、メールのさまざまなプロパティとメソッドを設定することで、メールメッセージオブジェクトを作成できます。

以下の手順とコードスニペットは、ゼロからEMLを作成するのに役立ちます。

  • デフォルトコンストラクタを使用して新しいMailMessageオブジェクトを作成します。
  • MailMessageオブジェクトのプロパティをニーズに合わせて設定します。
  • Saveメソッドを使用してMailMessageオブジェクトをEMLファイルに保存します。

MailMessageクラスのSaveメソッドは、ファイルパスと保存オプションの2つのパラメータを取ります。保存オプションは、出力ファイルのフォーマットを指定します。

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

この機能を実行するには、HTMLボディに画像を埋め込む必要があります。これを行うには、「img」タグを使用できます。

以下のコードスニペットは、メッセージのHTMLボディに画像を追加する方法を示しています。

  • HTMLボディには、cid:image1に設定されたソース属性を持つ画像タグが含まれています。
  • AlternateViewクラスは、埋め込まれた画像を含むメッセージ本文の代替ビューを取得するために使用されます。
  • LinkedResourceクラスは、埋め込まれた画像を表現し、そのコンテンツIDはimage1に設定されます。
  • 最後に、代替ビューがメッセージの代替ビューコレクションに追加されます。

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

これを行う1つの方法は、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ファイル内で正しいパスを指定する必要があります。

今、content.htmlからHTMLボディを設定して、MailMessageを簡単に作成できます。

  • まず、新しいHtmlLoadOptionsオブジェクトを作成します。
  • PathToResourcesに画像のパスを含む文字列を設定します。
  • EMLにプレーンテキストのAlternateViewを含める必要がある場合は、ShouldAddPlainTextViewプロパティをtrueに設定します。
  • HTMLファイルを読み込み、HtmlLoadOptionsオブジェクトをパラメータとして渡してMailMessageオブジェクトを作成します。
  • 追加のメッセージプロパティを設定します。
  • 最後に、Saveメソッドを使用してMailMessageオブジェクトをEMLファイルに保存します。

OutlookでのHTMLメッセージの表示改善のためのヒント

OutlookでHTMLメッセージを表示するには、そのコードがOutlookのレンダリングエンジンと互換性があることを確認する必要があります。これはほとんどのWebブラウザとは異なります。OutlookでのHTMLメールに影響を与える可能性のある一般的な問題には、以下が含まれます:

  • Outlookは、一部のタグやCSSプロパティ(背景画像、フロート、マージン、パディングなど)をサポートしていません。望ましいレイアウトとフォーマットを実現するために、インラインスタイル、テーブル、条件付きコメントを使用する必要があるかもしれません。
  • Outlookは、要素間に余分なスペースや行を追加したり、一部の要素をまったく削除したりすることがあります。これは、ノンブレークスペース、ゼロ幅スペース、または空のテーブルセルを使用して防ぐ必要があるかもしれません。
  • Outlookは、HTMLファイルのエンコーディングや文字セットを変更することがあり、一部の文字が正しく表示されない場合があります。メタタグを使用してエンコーディングと文字セットを指定する必要があるかもしれません。

結論

このブログ記事では、Aspose.Emailを使用してC#でプログラム的にMIMEメッセージを作成する方法を学びました。段階を追ったチュートリアルとコードサンプルでは、ゼロからEMLファイルを作成し、HTMLファイルからEMLファイルを作成し、メールメッセージのHTMLコンテンツに画像を追加する方法を示し、OutlookでのHTMLメッセージの表示を改善するための有用なヒントも紹介しました。

参考情報