电子邮件消息中的 TNEF 附件处理

**TNEF(传输中性封装格式)**是 Microsoft Outlook 用于在附件中封装丰富内容的专有格式,最常存储为 winmail.dat。Aspose.Email API 允许您读取包含 TNEF 附件的电子邮件并修改附件内容。然后可以将电子邮件保存为普通邮件或相同格式,保留 TNEF 附件。本文展示了处理包含 TNEF 附件的消息的不同代码示例。本文还展示了如何从 Outlook MSG 文件创建 TNEF EML 文件。

读取含 TNEF 附件的消息

以下代码片段展示了如何读取保留 TNEF 附件的消息。

读取不含 TNEF 附件的消息

以下代码片段展示了如何读取不保留 TNEF 附件的消息。

加载和保存 TNEF 附件

使用 Aspose.Email for .NET,您可以直接将 TNEF 附件加载到 MapiAttachment 使用文件路径或流来获取对象,然后将对象保存为 TNEF 格式。这使得能够创建 winmail.dat 文件或在电子邮件工作流中保留 Outlook 特有的格式。

API 在以下成员中提供 MapiAttachment 类:

加载 TNEF 附件

保存 TNEF 附件

下面的代码示例演示了如何从电子邮件中提取 winmail.dat 附件,保留它,并将其重新添加为消息的附件:

// message.eml contains a winmail.dat attachment, but by default, the attachment is not preserved.
var msg = MapiMessage.Load("message.eml");

var ms = new MemoryStream();
msg.Attachments[0].SaveToTnef("winmail.dat");

ms.Position = 0;
var fromtnefAttachment = MapiAttachment.LoadFromTnef(ms);
msg.Attachments.Add(fromtnefAttachment);

fromtnefAttachment = MapiAttachment.LoadFromTnef("winmail.dat");
msg.Attachments.Add(fromtnefAttachment);

更新 TNEF 附件中的资源

以下代码片段展示了如何在 TNEF 附件中更新资源并保留 TNEF 格式。

向 TNEF 消息添加附件

以下代码片段展示了如何向包含 TNEF 的主消息添加新附件。

从 MSG 创建 TNEF EML

Outlook MSG 有时包含表格和文本样式等信息,如果直接转换为 EML 可能会被破坏。从此类 MSG 文件创建 TNEF 消息可以保留格式,甚至通过电子邮件客户端发送时保持格式。 MailConversionOptions.ConvertAsTnef 属性用于实现此功能。以下代码片段展示了如何从 MSG 创建 TNEF EML。

以下示例代码可用于创建 TNEF。

识别 TNEF 格式的消息

以下代码片段展示了如何检测消息是否为 TNEF。

识别 TNEF 格式的附件

Attachment.IsTnef 属性用于检测附件是否为 TNEF 格式的消息。

var eml = MailMessage.Load(fileName);

foreach (attachment in eml.Attachments)
{
    Console.WriteLine($"Is Attachment TNEF?: {attachment.IsTnef}");
}