1. Introduction

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

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

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

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


2. Load an email message and render it to all output formats

以下の短いコード例は、入力メールメッセージ「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. Tuning email options for rendering

上記の例は、すべてのオプションがデフォルト値に設定された状態でのレンダリングを示しています。ただし、EmailOptions クラスが存在し、HtmlViewOptionsPdfViewOptionsPngViewOptionsJpgViewOptions の各ビューオプションの EmailOptions プロパティを通じて利用できます。EmailOptions クラスのインスタンスを手動で作成してビューオプションに割り当てる必要はなく、すでに内部で行われています。必要に応じてプロパティの値を調整するだけです。

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

3.1. Page size

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

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

3.2. Date and time format and time zone

メールメッセージには通常「送信」日時があります。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. Adjusting fields

メールメッセージには本文や件名、送信日時、送信者などのフィールドが含まれます。FieldTextMap プロパティを使用すると、これらフィールドのラベルを上書きでき、Field 列挙体の値(例:Field.Subject)をレンダリング結果に表示したいテキストにマッピングします。任意のエントリを置き換えたり新規に追加したりできます。

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. Load an email and get its view information

メールメッセージを実際にレンダリングせずに、プログラムからいくつかのフィールド値を取得することが可能です。そのためにはメールメッセージを 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 Meaning
Sent DateTime メールが送信された正確な時刻
Subject string メールの件名行に表示されるテキスト
From string 送信者のメールアドレス(文字列)

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

5. Summary

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

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

See Also

Get a free trial

GroupDocs.Viewer for .NET の無料トライアル版は releases.groupdocs.com からダウンロードできます。また、こちら から一時ライセンスを取得すれば、機能制限なしで全機能をお試しいただけます。