我正在使用 Azure 信息保护统一标签客户端来标记电子邮件。我们仍在我们的环境中使用 PGP,并且严格保密的电子邮件必须进行 PGP 加密。
当电子邮件发送时,我会尝试找出电子邮件是如何分类的,并在分类严格保密的情况下触发 PGP 加密。这是在 Outlook VSTO c# 插件中完成的。
为了找出分类,我阅读了由 AIP 设置的电子邮件 header 属性“msip_labels”,其中包含所有必要的信息。我正在使用以下过程来读取标题。该代码距离完美还很远。我只是想知道如何获取该值。:
private void GetHeaders()
{
var mail = (Outlook.MailItem)Application.ActiveInspector().CurrentItem;
var propertyAccessor = mail.PropertyAccessor;
try
{
var custom = propertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/string/{00020386-0000-0000-C000-000000000046}/msip_labels");
}
catch(Exception ex)
{
var message = ex.Message;
}
}
我能够读取由另一个工具设置的属性,但 AIP 属性是多行的。执行代码时,我收到错误:类型冲突。 (HRESULT 异常:0x80020005 (DISP_E_TYPEMISMATCH))
有没有办法读取多值属性?以下是 msip_labels 属性的示例(GUID 替换为 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX):
msip_labels: MSIP_Label_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX_Enabled=true;
MSIP_Label_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX_SetDate=2019-11-14T07:16:38Z;
MSIP_Label_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX_Method=Privileged;
MSIP_Label_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX_Name=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX;
MSIP_Label_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX_SiteId=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX;
MSIP_Label_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX_ActionId=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX;
MSIP_Label_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX_ContentBits=1
msip_label_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX_enabled: true
msip_label_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX_setdate: 2019-11-14T07:16:48Z
msip_label_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX_method: Privileged
msip_label_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX_name:
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
msip_label_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX_siteid:
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
msip_label_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX_actionid:
XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
msip_label_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX_contentbits: 0
最佳答案
最后我弄清楚了如何创建属性架构字符串,以便它返回正确的数据类型。使用 Outlook Spy 分析项目有助于找出数据类型。用于查询 msip_labels 的具有正确架构字符串的正确代码行是:
var mSIPLabels = propertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/string/{00020386-0000-0000-C000-000000000046}/msip_labels/0x0000001F") as string;
在属性名称之后,我必须传递类型描述符 0x0000001F
关于c# - 通过 Azure 信息保护统一标签客户端读取 Outlook 电子邮件中设置的 Internet header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58851539/