访问和管理 Outlook MAPI 属性

MAPI properties 是在 Microsoft Outlook 消息中使用的元数据项,定义诸如发件人、收件人、主题、附件和自定义数据等属性。

Aspose.Email for C++ 允许开发者以编程方式访问、修改和删除这些属性。 MapiMessage 对象、附件和具名属性。

MapiProperty 类表示一个 MAPI 属性,包含:

  • Name – 属性的字符串标识符。
  • Tag – 用于引用属性的数字标识符。
  • Data – 表示属性值的字节数组。

读取 MAPI 属性

Aspose.Email 允许您使用属性标签读取 MAPI 属性。

以下代码示例演示如何读取并显示 MAPI 消息文件(.msg)中的主题属性。

  1. 获取存放 Outlook 消息文件的目录路径。
  2. 将 Outlook 消息文件("message.msg")加载到一个 MapiMessage 对象。
  3. 访问消息的 MAPI 属性集合。
  4. 尝试使用以下方式检索主题属性 PR_SUBJECT (ANSI) 标签。
  5. 如果未找到 ANSI 主题属性,请尝试使用以下方式检索 Unicode 主题属性 PR_SUBJECT_W.
  6. 如果主题属性存在,将其字符串值输出到控制台。

设置 MAPI 属性

可以为消息或收件人设置 MAPI 属性,以定义自定义属性、电子邮件类型或同步状态。

下面的代码示例演示了如何创建 MAPI 消息,设置包括发件人和收件人详细信息、消息标志和修改时间在内的多个自定义 MAPI 属性,然后将消息保存到文件。

注意: ConvertDateTime() 辅助函数以如下方式将 System::DateTime 转换为 MAPI 兼容的 filetime 字节数组,用于日期/时间属性:

int64_t filetime = t.ToFileTime();

System::ArrayPtr<uint8_t> d = System::MakeArray<uint8_t>(8, 0);

d[0] = (uint8_t)(filetime & 0xFF);

d[1] = (uint8_t)((filetime & 0xFF00) >> 8);

d[2] = (uint8_t)((filetime & 0xFF0000) >> 16);

d[3] = (uint8_t)((filetime & 0xFF000000) >> 24);

d[4] = (uint8_t)((filetime & 0xFF00000000) >> 32);

d[5] = (uint8_t)((filetime & 0xFF0000000000) >> 40);

d[6] = (uint8_t)((filetime & 0xFF000000000000) >> 48);

d[7] = (uint8_t)(((uint64_t)filetime & 0xFF00000000000000) >> 56);

读取已命名的 MAPI 属性

具名 MAPI 属性 是用户或应用程序添加的自定义属性。

Aspose.Email 允许从消息和附件中读取这些属性。

从 MSG 文件读取具名 MAPI 属性

下面的代码示例演示了如何加载 MAPI 消息文件,检索其所有具名 MAPI 属性,并遍历它们以查找并显示特定具名属性("TEST" 和 "MYPROP")的值。它展示了通过枚举属性集合并根据名称标识符有条件地处理属性,来访问 MAPI 消息中的自定义或扩展属性的方式。

访问附件中的具名 MAPI 属性

附件中的具名 MAPI 属性也可以类似方式检索:

删除 MAPI 属性

如以下代码示例所示,您可以从消息或附件中删除标准和具名 MAPI 属性。