1. 介绍

GroupDocs.Viewer for .NET 库允许您导入任何常见格式的电子邮件消息,将其渲染为 HTML、PNG、JPEG 和 PDF,并且还能在不实际渲染的情况下提取基本的电子邮件属性。

实际上,在使用 GroupDocs.Viewer 处理电子邮件时,用户需要了解两种与电子邮件相关的类型:

  • Options.EmailOptions 类 – 用于控制消息的渲染方式(页面大小、日期格式、字段等)。
  • Results.MailMessageViewInfo — 由 GroupDocs.Viewer 在调用 GetViewInfo() 方法后生成,保存已加载电子邮件的元数据。

下面是一份非常简短的指南,展示如何渲染电子邮件以及获取其元数据。


2. 加载电子邮件并渲染为所有输出格式

下面的简短代码示例演示了如何将输入电子邮件 “sample.eml” 加载到 Viewer 类的实例中,然后渲染为四种受支持的输出格式:HTML、PDF、PNG 和 JPEG。正如您所见,首先实例化了四个视图选项类,随后通过文件路径将 “sample.eml” 加载到 Viewer 实例中,最后调用四次 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 类在四个视图选项(HtmlViewOptionsPdfViewOptionsPngViewOptionsJpgViewOptions)中均可通过 EmailOptions 属性访问。无需手动创建 EmailOptions 实例并赋给视图选项——这些工作已经自动完成,用户只需在需要时调整属性值即可。

EmailOptions 类包含若干属性,下面逐一说明。

3.1. 页面大小

控制输出页面的尺寸。默认值为 Unspecified —— GroupDocs.Viewer 会自动调整为最合适的大小。可以按如下方式设置,例如:

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

3.2. 日期时间格式和时区

电子邮件通常包含 “发送” 日期。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 小时

如果将 DateTimeFormat 设为 null 或空字符串,GroupDocs.Viewer 将使用系统当前的格式。

3.3. 调整字段

邮件正文以及诸如主题、发送时间、发件人等字段都可以通过 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. 加载电子邮件并获取其视图信息

可以在不渲染电子邮件本身的情况下,以编程方式获取电子邮件的部分字段值。为此,用户应将电子邮件文档加载到 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 发件人的电子邮件地址(纯字符串)。

以上三个属性均为只读。

5. 小结

  • 创建 Viewer 实例,并通过构造函数的路径或流指定输入电子邮件文件。
  • 调用 Viewer.GetViewInfo 方法,然后将其结果强制转换为 MailMessageViewInfo 类型,以获取 SentSubjectFrom 元数据。
  • 使用 EmailOptions 更改页面大小、日期格式、时区偏移或任意字段的文本标签,然后调用 Viewer.View() 方法。

这些步骤即可获取核心电子邮件属性,并让您控制渲染时的显示效果,无需额外库或复杂代码。

另见

获取免费试用

您可以从 releases.groupdocs.com 下载 GroupDocs.Viewer for .NET 的免费试用版。也可以通过 here 获取临时许可证,免费试用所有功能和特性。