メールメッセージの読み込みと保存

メールメッセージをロード

EML からロード

このセクションでは、EML ファイルを MailMessage オブジェクトにロードする方法を説明します。 EmlLoadOptions クラスです。EmlLoadOptions クラスは、EML ファイルのロード方法をカスタマイズするためのさまざまなオプションを提供します。たとえば、埋め込みメッセージ形式の保持や TNEF 添付ファイルのロード動作の制御などです。

  1. EmlLoadOptions のインスタンスを初期化します。
  2. 必要に応じてロードオプションを構成します。
  3. 使用する MailMessage.Load() 指定されたオプションで EML ファイルをロードするメソッドです。
using Aspose.Email;

// Initialize EmlLoadOptions
var loadOptions = new EmlLoadOptions
{
    // Configure load options
    PreferredTextEncoding = Encoding.UTF8, // Sets preferred encoding for the message
    PreserveEmbeddedMessageFormat = true, // Preserve format of embedded messages
    PreserveTnefAttachments = true, // Control TNEF attachment loading
    RemoveSignature = false // Do not remove the signature
};

// Load the EML file
var eml = MailMessage.Load("file.eml", loadOptions);

EmlLoadOptions のプロパティ

  • PreferredTextEncoding:メッセージの件名と本文の優先エンコーディングを設定します。デフォルトは null.
  • PreserveEmbeddedMessageFormat:ロード時に埋め込みメッセージの形式を保持するかどうかを示します。デフォルトは false.
  • PreserveTnefAttachments:TNEF 添付ファイルのロード動作を制御します。デフォルトは false.
  • RemoveSignature:ロード時に署名を削除するかどうかを指定します。デフォルトは false.

埋め込みメッセージ形式の保持

署名付き/署名なしでメッセージをロード

EML をロードする際、署名の保持はデフォルトでサポートされています。署名を削除するには、次のように設定できます。 LoadOptions.RemoveSignature true に設定するプロパティです。

以下のコード例は、メッセージをロードする際に署名を削除する方法を示しています:

var msg = MailMessage.Load(fileName, new EmlLoadOptions() { RemoveSignature = true});

EMLX からロード

以下のセクションでは、EMLX ファイルのロード方法を取り上げます。 EmlxLoadOptions クラス。このクラスは EmlLoadOptions と同様のオプションを提供し、エンコーディングや署名除去などを制御できます。

  1. EmlxLoadOptions をインスタンス化します。
  2. 必要に応じてプロパティを構成します。
  3. 使用する MailMessage.Load() EMLX ファイルをロードするメソッド。
using Aspose.Email;

// Instantiate EmlxLoadOptions
var loadOptions = new EmlxLoadOptions
{
    // Configure load options
    PreferredTextEncoding = Encoding.UTF8, // Set encoding preference
    PreserveEmbeddedMessageFormat = true, // Preserve embedded message formats
    RemoveSignature = true // Remove signatures during loading
};

// Load the EMLX file
var emlx = MailMessage.Load("file.emlx", loadOptions);

EmlxLoadOptions のプロパティ

  • PreferredTextEncoding:メッセージの件名と本文の優先エンコーディングを設定します。デフォルトは null.
  • PreserveEmbeddedMessageFormat:埋め込みメッセージの形式を保持するかどうかを示します。デフォルトは false.
  • RemoveSignature:ロード時に署名を削除するかどうかを指定します。デフォルトは false.

HTML からロード

HTML ファイルを MailMessage にロードする方法を学ぶには、 HtmlLoadOptions クラス。このクラスは、リソース管理やプレーンテキストビューの追加オプションを備えた HTML コンテンツの処理専用に設計されています。

  1. HtmlLoadOptions のインスタンスを初期化します。
  2. 必要なプロパティを構成します。
  3. 使用する MailMessage.Load() 指定されたオプションで HTML ファイルをロードするメソッド。
using Aspose.Email;

// Initialize HtmlLoadOptions
var loadOptions = new HtmlLoadOptions
{
    // Configure load options
    PathToResources = "resources/", // Path to directory containing resource files
    PreferredTextEncoding = Encoding.UTF8, // Set encoding preference
    ShouldAddPlainTextView = true // Add plain text view of the body
};

// Load the HTML file
var html = MailMessage.Load("file.html", loadOptions);

HtmlLoadOptions のプロパティ

  • PathToResources: リソースファイル(例:画像)を含むディレクトリへのパスを定義します。
  • PreferredTextEncoding: メッセージの件名と本文の優先エンコーディングを設定します。デフォルトは null.
  • PreserveEmbeddedMessageFormat: 埋め込みメッセージの形式を保持するかどうかを決定します。デフォルトは false.
  • ShouldAddPlainTextView: メッセージ本文のプレーンテキストビューを追加するかどうかを指定します。デフォルトは false.

MHTML からロード

このセクションでは、MHTML ファイルをロードする方法を説明します。 MhtmlLoadOptions クラス。MhtmlLoadOptions クラスは、エンコーディングの管理、埋め込みメッセージ形式の保持、TNEF 添付ファイルの処理オプションを提供します。

  1. MhtmlLoadOptions のインスタンスを作成します。
  2. 必要なプロパティを構成します。
  3. 以下の方法で MHTML ファイルをロードします MailMessage.Load() メソッド。
using Aspose.Email;

// Create MhtmlLoadOptions
var loadOptions = new MhtmlLoadOptions
{
    // Set load options
    PreferredTextEncoding = Encoding.UTF8, // Set encoding preference
    PreserveEmbeddedMessageFormat = true, // Preserve format of embedded messages
    PreserveTnefAttachments = true, // Handle TNEF attachments
    RemoveSignature = false // Keep the signature
};

// Load the MHTML file
var mhtml = MailMessage.Load("file.mht", loadOptions);

MhtmlLoadOptions のプロパティ

  • MessageFormat: メールメッセージのフォーマットを表します。EML、MSG、または MHTML が可能です。デフォルトは EML です。
  • PreferredTextEncoding:メッセージの件名と本文の優先エンコーディングを設定します。デフォルトは null.
  • PreserveEmbeddedMessageFormat: 埋め込みメッセージの形式を保持するかどうかを決定します。デフォルトは false.
  • PreserveTnefAttachments:TNEF 添付ファイルのロード動作を制御します。デフォルトは false.
  • RemoveSignature:ロード時に署名を削除するかどうかを指定します。デフォルトは false.

MSG からロード

このセクションでは、MSG ファイルを MailMessage オブジェクトにロードする方法を説明します。 MsgLoadOptions クラス。MsgLoadOptions クラスは、MSG ファイルのロード方法を処理するためのさまざまなプロパティを提供し、RTF コンテンツの保持や TNEF 添付ファイルの管理オプションなどがあります。

  1. MsgLoadOptions のインスタンスを作成します。
  2. ロードをカスタマイズするために必要なプロパティを設定します。
  3. 以下を使用して MSG ファイルをロードします MailMessage.Load() メソッド。
using Aspose.Email;

// Create MsgLoadOptions
var loadOptions = new MsgLoadOptions
{
    // Set load options
    KeepOriginalEmailAddresses = true, // Preserve original email addresses
    PreferredTextEncoding = Encoding.UTF8, // Set preferred encoding
    PreserveRtfContent = true, // Keep RTF content in the message
    PreserveTnefAttachments = true, // Handle TNEF attachments
    RemoveSignature = false, // Keep the signature
    Timeout = 5000 // Set timeout to 5 seconds
};

// Load the MSG file
var msg = MailMessage.Load("file.msg", loadOptions);

MsgLoadOptions のプロパティ

  • KeepOriginalEmailAddresses: 元のメールアドレスを保持するかどうかを示します。デフォルトは false.
  • PreferredTextEncoding: メッセージの件名と本文の優先エンコーディングを定義します。デフォルトは null.
  • PreserveEmbeddedMessageFormat: 埋め込みメッセージの形式を保持すべきかどうかを決定します。デフォルトは false.
  • PreserveRtfContent: RTF 本文コンテンツを保持するかどうかを指定します。 MailMessage. デフォルトは false.
  • PreserveTnefAttachments: TNEF 添付ファイルの読み込み動作を管理します。デフォルトは false.
  • RemoveSignature: 読み込み時に署名を削除するかどうかを決定します。デフォルトは false.
  • タイムアウト: 変換中のフォーマット時間をミリ秒単位で制限します。デフォルトは 3000 ms です。

TNEF からロード

TNEF eml ファイルを読み込む方法を学ぶには、 TnefLoadOptions クラスです。このクラスは、ロードプロセス中にエンコーディングを管理し、署名を削除するオプションを提供します。

  1. TnefLoadOptions をインスタンス化します。
  2. 必要に応じてプロパティを構成します。
  3. 使用する MailMessage.Load() TNEF ファイルをロードするメソッドです。
using Aspose.Email;

// Instantiate TnefLoadOptions
var loadOptions = new TnefLoadOptions
{
    // Configure load options
    PreferredTextEncoding = Encoding.UTF8, // Set encoding preference
    PreserveEmbeddedMessageFormat = true, // Preserve embedded message formats
    RemoveSignature = true // Remove signatures during loading
};

// Load the TNEF file
var tnef = MailMessage.Load("file.eml", loadOptions);

TnefLoadOptions のプロパティ

  • MessageFormat:メールメッセージの形式(EML、MSG、MHTML など)を表します。デフォルトは EML です。
  • PreferredTextEncoding:メッセージの件名と本文の優先エンコーディングを設定します。デフォルトは null.
  • PreserveEmbeddedMessageFormat:埋め込みメッセージの形式を保持するかどうかを示します。デフォルトは false.
  • RemoveSignature:ロード時に署名を削除するかどうかを指定します。デフォルトは false.

ファイル形式の検出

Aspose.Email API は、提供されたメッセージファイルのファイル形式を検出する機能を提供します。 DetectFileFormat メソッド FileFormatUtil この目的に使用できるクラスです。以下のクラスとメソッドを使用して、読み込まれたファイル形式を検出できます。

以下のコードスニペットは、ファイル形式を検出する方法を示しています。

メッセージの保存と変換

Aspose.Email は任意のメッセージタイプを別の形式に変換することを容易にします。この機能を示すために、この記事のコードはディスクから 3 種類のメッセージを読み込み、別の形式で保存します。基底クラスは SaveOptions およびクラス EmlSaveOptions, MsgSaveOptions, MhtSaveOptions, HtmlSaveOptions 保存時の追加設定用 MailMessage 他の形式でメッセージを保存するために使用できます。本記事では、これらのクラスを使用してサンプルメールを以下のように保存する方法を示します。

  • EML 形式。
  • Outlook MSG。
  • MHTML 形式。
  • HTML 形式。

EML に保存

以下のコードスニペットは、EML メッセージを読み込み、同じ形式でディスクに保存する方法を示しています。

元の境界を保持

以下のコードスニペットは、EML を読み込み、オリジナルの境界を保持したまま EML として保存する方法を示しています。

TNEF 添付を保持

以下のコードスニペットは、TNEF 添付ファイルを保持したまま EML として保存する方法を示しています。

EML を MSG に保存

次のコードスニペットは、EML メッセージをロードし、適切なオプションを使用して MSG に変換する方法を示しています: SaveOptions.

日付を保持

この MsgSaveOptions クラスは、元のメッセージを日付を保持した Outlook メッセージ ファイル (MSG) として保存できます。以下のコードスニペットは、日付を保持して MSG として保存する方法を示しています。

EML を MHTML に保存

さまざまな MHTML オプションを使用して目的の結果を得ることができます。以下のコードスニペットは、EML メッセージをロードする方法を示しています。 MailMessage そして、UTC 時間のメッセージ日付で MHTML に変換します。

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET

// Set options for MHTML output
MhtSaveOptions saveOptions = SaveOptions.DefaultMhtml;
saveOptions.PreserveOriginalDate = false; // save a message date as UTC date

// Initialize and load an existing EML file
using (MailMessage mailMessage = MailMessage.Load(folderPath + "Message.eml"))
{
    mailMessage.Save(folderPath + "Message_out.mhtml", saveOptions);
}

変換オプション

この MhtSaveOptions このクラスは、メールメッセージを MHTML 形式で保存するための追加オプションを提供します。列挙体は MhtFormatOptions これにより、追加のメール情報を出力 MHTML に書き込むことが可能になります。以下の追加フィールドが書き込めます:

  • WriteHeader – メールヘッダーを書き出します。
  • WriteOutlineAttachments – アウトライン添付ファイルを書き出します。
  • WriteCompleteEmailAddress – 完全なメールアドレスを書き出します。
  • NoEncodeCharacters – 文字の転送エンコーディングは使用しないでください。
  • HideExtraPrintHeader – 出力ファイルの上部にある余分な印刷ヘッダーを非表示にします。
  • WriteCompleteToEmailAddress – 受信者の完全なメールアドレスを書き出します。
  • WriteCompleteFromEmailAddress – 送信者の完全なメールアドレスを書き出します。
  • WriteCompleteCcEmailAddress – CC 受信者の完全なメールアドレスを書き出します。
  • WriteCompleteBccEmailAddress – BCC 受信者の完全なメールアドレスを書き出します。
  • RenderCalendarEvent – カレンダーイベントのテキストを書き出します。
  • SkipByteOrderMarkInBody – Byte Order Mark (BOM) バイトを書き出します。
  • RenderVCardInfo – VCard AlternativeView のテキストを書き出します。
  • DisplayAsOutlook – From ヘッダーを表示します。
  • RenderTaskFields – 特定のタスクフィールドを書き出します。
  • None – 設定は指定されていません。

以下のコードスニペットは、オプション設定を使用して EML ファイルを MHTML に変換する方法を示しています。

カレンダーイベントをレンダリング

この MhtFormatOptions.RenderCalendarEvent カレンダーイベントを出力 MHTML にレンダリングします。次のコードスニペットは、MHTML に変換しながらカレンダーイベントをレンダリングする方法を示しています。

インライン画像なしで MHT にメールをエクスポート

カスタマイズされたタイムゾーンでメールを MHT にエクスポート

MailMessage class は以下を提供します TimeZoneOffset MHTにエクスポートする際にカスタマイズされたタイムゾーンを設定するプロパティです。次のコードスニペットは、カスタマイズされたタイムゾーンでメールをMHTにエクスポートする方法を示しています。

フォント調整

EML を HTML に保存

この HtmlSaveOptions クラスはメッセージ本文をHTMLにエクスポートすることを可能にします。次のコードスニペットは、メッセージをHTMLとして保存する方法を示しています。

埋め込みリソースなしで保存

EML を OFT に保存

次のコードスニペットは、メッセージを Outlook テンプレート (.oft) ファイルとして保存する方法を示しています。

EML を MSG に変換 (MailMessage から MapiMessage へ)

変換するには MailMessage EML ファイルからロードされたオブジェクトを MapiMessage オブジェクト、次を使用してください MapiConversionOptions クラス。この変換は、これら二つのオブジェクトが異なる目的で使用され、メール処理において異なるニーズに対応しているため、しばしば必要となります。 MapiMessage は Microsoft Outlook および Exchange Server との互換性を特に考慮して設計されており、メッセージング アプリケーション プログラミング インターフェイス (MAPI) 形式に準拠しています。これにより、MSG ファイルに変換されたメールは Microsoft 製品と完全に互換性があり、Outlook 内で直接開いたり、変更したり、管理したりできます。

たとえば、メールをアーカイブ、インデックス付け、または MAPI 形式(PST/OST、OLM ストレージ)が必要なストレージで処理する必要がある場合、この変換も必要です。 MapiConversionOptions このクラスは、元のメッセージ形式を保持する、元の日付を保持する、変換中にRTF本文を圧縮するなど、追加のオプションを指定できるようにします。以下のコードサンプルは、.eml 形式のファイルからメールをロードし、Outlook の .msg 形式に変換する方法を示しています。カスタマイズが可能ですが、変換時に元のメールの特定の特性が保持されるようにします。

  1. インスタンスを作成する MapiConversionOptions そして、そのプロパティを構成します。
  2. 変換する MailMessage オブジェクトを MapiMessage 構成された変換オプションを使用するオブジェクト。
MailMessage eml = MailMessage.Load("email.eml", new EmlLoadOptions());

// Create an instance of MapiConversionOptions
var conversionOptions = new MapiConversionOptions
{
    // Configure MapiConversionOptions
    Format = OutlookMessageFormat.Unicode, // Use Unicode format for MSG
    PreserveEmbeddedMessageFormat = true, // Preserve the format of embedded messages
    PreserveOriginalAddresses = true, // Keep original email addresses
    PreserveOriginalDates = true, // Preserve original dates
    PreserveEmptyDates = false, // Generate new dates if original are empty
    RemoveSignature = false, // Do not remove the signature
    UseBodyCompression = true, // Enable RTF body compression
    ForcedRtfBodyForAppointment = false // Disable forced RTF body for appointments
};

// Convert MailMessage to MapiMessage
MapiMessage msg = MapiMessage.FromMailMessage(eml, conversionOptions);

MapiConversionOptions の利用可能なプロパティ

  • ASCIIFormat: 戻り値は MapiConversionOptions 構成された OutlookMessageFormat ASCII として、 PreserveSignature false に設定し、 UseBodyCompression false に設定します。このオプションは、純粋な ASCII 形式への変換が必要な場合に便利です。

  • UnicodeFormat: 戻り値は MapiConversionOptionsOutlookMessageFormat Unicode に設定し、両方とも PreserveSignature および UseBodyCompression false に設定します。MSG ファイルでの文字サポートを拡張する際にこのオプションを使用してください。

  • ForcedRtfBodyForAppointment: true に設定すると、カレンダーの予定に RTF 本文の使用を強制します。特定のメールクライアントとの互換性を確保したい場合に便利です。デフォルトは true です。

  • Format: MSG ファイルの出力形式を指定します。以下のいずれかに設定できます。 OutlookMessageFormat.ASCII または OutlookMessageFormat.Unicode、変換された MSG が ASCII か Unicode エンコーディングを使用するかを制御します。

  • PreserveEmbeddedMessageFormat: 変換時に埋め込みメッセージの元の EML 形式を保持するかどうかを決定します。 MapiMessage. true に設定すると、埋め込みメールが元の構造を保持します。デフォルトは false です。

  • PreserveEmptyDates: true に設定すると、EML の元の保存日時と変更日時を保持します。元の日時が空の場合は、新しい日時が生成されます。

  • PreserveOriginalAddresses: true に設定すると、検証せずに元のメールアドレスを保持します。厳格な基準に合致しない可能性があるが、そのまま保持したいメールアドレスを扱う際に便利です。デフォルトは false です。

  • PreserveOriginalDates: 変換プロセスで元の送受信日時が保持されるようにします。true に設定すると、歴史的な正確性を高めるためにこれらの日時が保持されます。

  • RemoveSignature: デジタル署名が存在する場合、変換中にメッセージから削除するかどうかを制御します。デフォルトは false で、明示的に削除しない限り署名は保持されます。

  • UseBodyCompression: true に設定すると RTF 本文の圧縮が有効になります。リッチな書式設定を含む大きなメッセージの MSG ファイルサイズを削減するのに役立ちます。