1. はじめに

GroupDocs.Viewer for .NET ライブラリを使用すると、メールメッセージを任意の一般的な形式でインポートし、HTML、PNG、JPEG、PDF にレンダリングでき、実際にレンダリングせずに基本的なメールメッセージのプロパティを抽出することもできます。

実際、GroupDocs.Viewer でメールメッセージを扱う際には、メール固有の 2 つの型について認識しておく必要があります。

  • Options.EmailOptions クラス – メッセージのレンダリング方法(ページサイズ、日付形式、フィールドなど)を制御できます。
  • Results.MailMessageViewInfo クラス — GetViewInfo() メソッドを呼び出した後に GroupDocs.Viewer が生成し、読み込まれたメールメッセージのメタデータを保持します。

以下は、メールメッセージをレンダリングしメタデータを取得する方法を示す非常に簡単なガイドです。


2. メールメッセージを読み込み、すべての出力形式にレンダリングする

以下の非常に短いコード例は、入力メールメッセージ「sample.eml」を Viewer クラスのインスタンスにロードし、4 つのサポートされている出力形式すべて(HTML、PDF、PNG、JPEG)にレンダリングする方法を示しています。最初に 4 つのビューオプションクラスがインスタンス化され、次に「sample.eml」がファイルパスで Viewer インスタンスにロードされ、最後に 4 回の Viewer.View() 呼び出しが行われます。

using GroupDocs.Viewer;
using GroupDocs.Viewer.Options;


HtmlViewOptions htmlOptions = HtmlViewOptions.ForEmbeddedResources("html-page{0}.html");
PdfViewOptions pdfOptions = new PdfViewOptions("Output.pdf");
PngViewOptions pngOptions = new PngViewOptions("image-page{0}.png");
JpgViewOptions jpegOptions = new JpgViewOptions("image-page{0}.jpeg");

using (Viewer viewer = new Viewer("sample.eml"))
{
    viewer.View(htmlOptions);
    viewer.View(pdfOptions);
    viewer.View(pngOptions);
    viewer.View(jpegOptions);
}

3. レンダリング用のメールオプションの調整

上記の例は、すべてのオプションがデフォルト値に設定された状態でのレンダリングを示しています。ただし、EmailOptions クラスがあり、これは 4 つのビューオプション(HtmlViewOptionsPdfViewOptionsPngViewOptionsJpgViewOptions)すべてで EmailOptions プロパティを通じて利用可能です。EmailOptions クラスのインスタンスを手動で作成してビューオプションに割り当てる必要はありません—すべては既に行われており、必要に応じてプロパティ値を調整するだけです。

EmailOptions クラスには以下のようないくつかのプロパティがあります。

3.1. ページサイズ

Enum PageSize は出力ページのサイズを制御します。デフォルトは Unspecified で、GroupDocs.Viewer が最適なサイズに調整します。例えば次のように設定できます。

PdfViewOptions pdfOptions = new PdfViewOptions("Output.pdf");
pdfOptions.EmailOptions.PageSize = PageSize.A1;

3.2. 日付と時刻の形式およびタイムゾーン

メールメッセージには通常「Sent」日付があります。DateTimeFormat プロパティはこの日時値の書式を制御し、TimeZoneOffset はこの日時に正または負のシフトを適用します。以下の例をご覧ください。

JpgViewOptions jpegOptions = new JpgViewOptions("image-page{0}.jpeg");
jpegOptions.EmailOptions.DateTimeFormat = "MM d yyyy HH:mm tt zzz"; // 完全にカスタムな書式
jpegOptions.EmailOptions.TimeZoneOffset = TimeSpan.FromHours(-5); // 5 時間前にシフトを追加

DateTimeFormatnull または空文字列のままにすると、GroupDocs.Viewer はシステムの現在の書式を使用します。

3.3. フィールドの調整

メールメッセージには本文と、件名、送信日時、送信者などのフィールドが含まれます。GroupDocs.Viewer は FieldTextMap プロパティを通じてこれらのフィールドのラベルを上書きできるようにしています。このプロパティは Field 列挙値(例:Field.Subject)を Dictionary を介してレンダリング出力に表示されるテキストにマッピングします。したがって、ユーザーは任意のエントリを置き換えたり新しいエントリを追加したりできます。

PngViewOptions pngOptions = new PngViewOptions("image-page{0}.png");
pngOptions.EmailOptions.FieldTextMap[Field.Subject] = "Email Subject";
pngOptions.EmailOptions.FieldTextMap[Field.Sent] = "Mail was sent at";
pngOptions.EmailOptions.FieldTextMap[Field.From] = "Sender";

4. メールを読み込み、ビュー情報を取得する

メールメッセージ自体をレンダリングせずに、プログラムからメールメッセージのいくつかのフィールド値を取得することが可能です。そのためには、メールメッセージ文書を Viewer インスタンスにロードし、以下に示すように Viewer.GetViewInfo() インスタンスメソッドを使用します。

using System;
using GroupDocs.Viewer;
using GroupDocs.Viewer.Options;
using GroupDocs.Viewer.Results;
// ...

using (Viewer viewer = new Viewer("sample.eml"))
{
    ViewInfo generalInfo = viewer.GetViewInfo(ViewInfoOptions.ForHtmlView());
    // 明示的なキャスト
    MailMessageViewInfo mailMessageInfo = (MailMessageViewInfo)generalInfo;
    Console.WriteLine("From: {0}; Subject: {1}; Sent: {2}.", mailMessageInfo.From, mailMessageInfo.Subject, mailMessageInfo.Sent);

    // 必要に応じて任意の出力形式にレンダリング
    viewer.View(HtmlViewOptions.ForEmbeddedResources());
}

Viewer.GetViewInfo() メソッドは共通の ViewInfo クラスのインスタンスを返し、これが MailMessageViewInfo クラスにキャストされます。現在サポートされているフィールドは FromSubjectSent のみです。

Property Type 意味
Sent DateTime メールが送信された正確な時刻。
Subject string メールの件名行に表示されるテキスト。
From string 送信者のメールアドレス(文字列)。

3 つのプロパティはすべて読み取り専用です。

5. まとめ

  • Viewer インスタンスを作成し、コンストラクタにパスまたはストリームで入力メールメッセージファイルを指定します。
  • Viewer.GetViewInfo() メソッドを呼び出し、その結果を MailMessageViewInfo 型にキャストしてメタデータ(SentSubjectFrom フィールド)を取得します。
  • EmailOptions を使用してページサイズ、日付形式、タイムゾーンオフセット、または任意のフィールドに表示されるテキストラベルを変更し、Viewer.View() メソッドを呼び出します。

これらの手順により、メールの主要プロパティを取得でき、レンダリング時のメッセージ表示を制御できます。追加のライブラリや複雑なコードは不要です。

参考

無料トライアルを取得する

GroupDocs.Viewer for .NET の無料トライアル版は releases.groupdocs.com からダウンロードできます。また、こちら から一時ライセンスを取得して、すべての機能と機能性を制限なく試すことも可能です。