彩票走势图

借助Aspose.Email、 管理标准、命名和自定义 MAPI 属性

翻译|行业资讯|编辑:胡涛|2024-09-23 11:22:39.800|阅读 12 次

概述:本文深入探讨了使用Aspose.Email for .NET访问、枚举和操作 MAPI 属性的各种技术。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

以编程方式管理电子邮件数据可能很复杂,尤其是在处理消息应用程序编程接口 (MAPI) 属性时。这些属性是与 MAPI 对象(例如消息、文件夹、收件人和消息系统中的其他组件)关联的属性或元数据。

这些属性提供有关对象的详细信息,例如电子邮件的主题、发件人的地址、电子邮件的发送日期等。MAPI 属性广泛用于电子邮件客户端和其他消息应用程序中,以管理和操作电子邮件数据。本文深入探讨了使用Aspose.Email for .NET访问、枚举和操作 MAPI 属性的各种技术。

Aspose.Email 是用于轻松的开发 email 功能的应用程序的一组控件,基于  ASP.NET 的Web应用、Web服务和Windows 应用。支持 Outlook PST, EML, MSG, and MHT 格式. 允许开发者直接与 SMTP, POP, FTP, 和 MS Exchange 服务器进行工作。支持邮件合并、行事历、定制邮件标题和内容、嵌入文件等,Aspose API支持流行文件格式处理,并允许将各类文档导出或转换为固定布局文件格式和最常用的图像/多媒体格式。

Aspose.Email 最新下载   

.NET API 在 C# 中管理 MAPI 属性

Aspose.Email for .NET为处理消息应用程序编程接口属性提供全面支持,允许开发人员通过详细控制管理和操作电子邮件数据。它也是一个广泛的 API,允许开发人员为其电子邮件应用程序配备强大的消息处理和其他相关任务功能。

使用 Aspose.Email for .NET,开发人员可以创建复杂的电子邮件管理和处理解决方案。要开始使用该库,您可以从 Aspose 网站或它并将其集成到您的项目中。

MAPI 属性的类别

确保您的项目中已安装 Aspose.Email,然后我们就开始吧。MAPI 属性可分为三种主要类型:标准属性、命名属性和自定义(用户定义)属性。每种类别都有不同的用途,并为使用电子邮件数据的开发人员提供不同程度的灵活性和控制力。以下是每种类型的概述:

标准属性

它们由 MAPI 规范定义,具有预定义的属性标签,通常用于消息传递对象的标准属性。例如:

  • :消息的主题。
  • :发件人的姓名。
  • :传递原始消息的日期和时间。

命名属性

这些属性由 GUID 和字符串名称或整数标识符标识,可以实现比标准属性更具体的分类和识别。

自定义(用户定义)属性

它们由开发人员定义,扩展了 MAPI 对象的功能,允许定制和特定于应用程序的数据处理。

列出所有 MAPI 属性

要列出消息中的所有 MAPI 属性,我们将使用方法来加载消息并遍历其属性。下面的代码示例演示了如何使用 Aspose.Email for .NET 加载 MAPI 消息、遍历其属性以及打印有关每个属性的详细信息:

  1. 从指定路径加载 MAPI 消息文件。
  2. 遍历msg.Properties.Values集合来访问每个属性。
  3. 对于每个 MAPI 属性,打印出其标签、规范名称和数据类型:
    • 标签属性为 MAPI 属性提供唯一标识符。
    • Descriptor.CanonicalName属性给出了属性的人类可读的名称。
    • Descriptor.DataType属性指示该属性的数据类型。
// Load the email message from a file
var msg = MapiMessage.Load(@"D:\Aspose\Files\msg\test.msg");

// Iterate through all MAPI properties and print their details
foreach (var mapiProperty in msg.Properties.Values)
{
Console.WriteLine($"Tag: {mapiProperty.Tag}");
Console.WriteLine($"Canonical Name: {mapiProperty.Descriptor.CanonicalName}");
Console.WriteLine($"Data Type: {mapiProperty.Descriptor.DataType}");
}
列出命名的 MAPI 属性

常规 MAPI 属性由包含属性类型和属性标识符的 16 位属性标记标识,而命名属性则由 GUID 和字符串名称或整数标识符的组合标识:

  • GUID(全局唯一标识符):唯一标识符,保证属性集的唯一性。这个GUID通常由开发者提供。
  • 姓名或身份证号:
    • 字符串名称(区分大小写)。
    • 32 位整数标识符。

以下代码片段演示了如何使用 Aspose.Email for .NET 遍历消息的命名 MAPI 属性并根据属性描述符类型打印出详细信息:

  1. 对象的“NamedProperties.Values”集合来遍历每个命名属性,以获取所有命名的 MAPI 属性。
  2. 检查当前命名属性的 Descriptor 是否为类型。如果是,则将 Descriptor 转换为 PidNamePropertyDescriptor。打印出属性的 GUID、规范名称和数据类型。
  3. 检查当前命名属性的 Descriptor 是否为类型。如果是,则将 Descriptor 转换为 PidLidPropertyDescriptor。打印出属性的 GUID、规范名称、长 ID 和数据类型。
foreach (MapiNamedProperty mapiNamedProperty in msg.NamedProperties.Values)
{
if (mapiNamedProperty.Descriptor is PidNamePropertyDescriptor pidNamePropertyDescriptor)
{
Console.WriteLine($"GUID: {pidNamePropertyDescriptor.PropertySet}");
Console.WriteLine($"Canonical Name: {pidNamePropertyDescriptor.CanonicalName}");
Console.WriteLine($"Data Type: {pidNamePropertyDescriptor.DataType}");
}

if (mapiNamedProperty.Descriptor is PidLidPropertyDescriptor pidLidPropertyDescriptor)
{
Console.WriteLine($"GUID: {pidLidPropertyDescriptor.PropertySet}");
Console.WriteLine($"Canonical Name: {pidLidPropertyDescriptor.CanonicalName}");
Console.WriteLine($"Long ID: {pidLidPropertyDescriptor.LongId}");
Console.WriteLine($"Data Type: {pidLidPropertyDescriptor.DataType}");
}
}

因此,我们根据描述符类型(或)打印了特定的属性PropertySet,如CanonicalName、、DataType和。LongIdPidNamePropertyDescriptorPidLidPropertyDescriptor

通过描述符检索属性

通过描述符检索属性是一种访问特定 MAPI 属性的直接方法,无需遍历整个属性集合。Aspose.Email for .NET 提供了一种使用 KnownPropertyList 检索属性的便捷方法下面的代码示例演示了如何检索和打印特定属性(如 InternetMessageId,如果存在)的详细信息。

  1. 使用对象的 Properties 集合访问属性。
  2. 验证该属性不为空以确保它存在于消息中。
  3. 打印检索到的属性的详细信息:标签、规范名称和数据类型。
  4. 如果属性数据类型是字符串,请使用方法检索属性值并打印它。
// Retrieve and print the InternetMessageId property if it exists
if (msg.Properties[KnownPropertyList.InternetMessageId] != null)
{
var property = msg.Properties[KnownPropertyList.InternetMessageId];
Console.WriteLine($"Tag: {property.Tag}");
Console.WriteLine($"Canonical Name: {property.Descriptor.CanonicalName}");
Console.WriteLine($"Data Type: {property.Descriptor.DataType}");

// Retrieve and print the property value if it is a string
if (property.Descriptor.DataType == PropertyDataType.String)
{
var propertyValue = property.GetString();
Console.WriteLine($"Value: {propertyValue}");
}
}
通过标签检索属性

属性标记是唯一标识 MAPI 属性的 32 位标识符。它由属性 ID 和属性类型组成。使用属性标记,您可以直接访问 MAPI 消息中的特定属性。下面的代码示例演示了如何检索和打印特定属性(如 PR_HASATTACH,如果存在)的详细信息。

  1. 使用对象的 Properties 集合访问 PR_HASATTACH 属性。
  2. 验证该属性不为空以确保它存在于消息中。
  3. 打印检索到的属性的详细信息:标签和数据类型。
  4. 如果属性数据类型为布尔值,则使用方法来检索属性值并打印消息是否带有附件。
// Retrieve and print the PR_HASATTACH property if it exists
if (msg.Properties[MapiPropertyTag.PR_HASATTACH] != null)
{
var property = msg.Properties[MapiPropertyTag.PR_HASATTACH];
Console.WriteLine($"Tag: {property.Tag}");
Console.WriteLine($"Data Type: {property.DataType}");

// Retrieve and print the property value if it is a boolean
if (property.DataType == (int)MapiPropertyType.PT_BOOLEAN)
{
var propertyValue = property.GetBoolean();
Console.WriteLine($"Has Attachments: {propertyValue}");
}
}
使用 GetProperty 方法

方法简化了从 MAPI 消息中检索常规属性和命名属性的过程。此方法允许您通过其描述符或标记直接访问属性,而无需手动检查属性集合。以下代码示例演示了如何利用 GetProperty 方法访问特定的 MAPI 属性:

  1. 使用方法从类直接访问属性。
  2. 验证该属性不为空以确保它存在于消息中。
  3. 使用方法检索属性值并打印它。
// Retrieve and print the CurrentVersionName property
var namedProperty = msg.GetProperty(KnownPropertyList.CurrentVersionName);
if (namedProperty != null)
{
Console.WriteLine($"Current Version Name: {namedProperty.GetString()}");
}

这里,GetProperty用于CurrentVersionName直接访问属性。

使用自定义属性

自定义 MAPI 属性是附加属性,不属于预定义的 MAPI 属性集。它们用于保存特定于应用程序的数据,由开发人员定义。通过允许开发人员定义和使用附加属性,MAPI 提供了一种灵活而强大的方法来存储和管理消息应用程序中的自定义数据。自定义属性是命名属性(使用 GUID 和字符串名称)。Aspose.Email 引入了一种方法,您可以使用它来获取消息中定义的所有自定义属性。这是通过方法实现的。下面的代码示例演示了如何获取和打印 MAPI 消息中定义的所有自定义属性:

  1. 使用方法获取消息中定义的所有自定义属性的集合。
  2. 遍历检索到的集合中的每个自定义属性。
  3. 打印属性详细信息:标签、规范名称和数据类型。
// Retrieve and print custom properties
var customProperties = msg.GetCustomProperties();
foreach (var customProperty in customProperties)
{
Console.WriteLine($"Tag: {customProperty.Tag}");
Console.WriteLine($"Canonical Name: {customProperty.Descriptor.CanonicalName}");
Console.WriteLine($"Data Type: {customProperty.Descriptor.DataType}");
}
结论

本文探讨了使用Aspose.Email for .NET访问、枚举和操作 MAPI 属性的各种技术。Aspose.Email 为处理这些属性提供了全面的支持,允许开发人员通过精细控制来管理和操作电子邮件数据。通过使用此库,开发人员可以创建复杂的电子邮件管理和处理解决方案,从而更轻松地使用标准、命名和自定义属性。


欢迎下载|体验更多Aspose文档管理产品 

获取更多信息请咨询 或 加入Aspose技术交流群(666790229)


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP