当前位置: 首页 > 知识库问答 >
问题:

通过Azure Information Protection统一标签客户端读取Outlook电子邮件中设置的internet标头

简学文
2023-03-14

我正在使用Azure信息保护统一标签客户端来标记电子邮件。我们仍在我们的环境中使用PGP,严格保密的电子邮件必须经过PGP加密。

发送电子邮件时,我尝试找出电子邮件是如何分类的,并在分类是严格保密的情况下触发PGP加密。这是在Outlook VSTO c#外接程序中完成的。

为了找到分类,我阅读了AIP设置的电子邮件标题属性“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

共有2个答案

洪安顺
2023-03-14

除此之外:
如何将MIP Lablel设置为(Outlook VSTO)邮件项

    public void SetMIP_LabelPublic(MailItem newMailItem)
    {
        var lblID        = MipFileService.Label_Standard_Id;    // <== your label ID
        var tenantId     = MipSettings.TenantId;                 //<== azur information tenant (your company) id
        var mipMethod    = "Privileged";            
        var dd           = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ssZ", CultureInfo.CreateSpecificCulture("en-us"));

        var mipPropertyText = $"MSIP_Label_{lblID}_Enabled=true; "
            + $"MSIP_Label_{lblID}_SetDate={dd}; "
            + $"MSIP_Label_{lblID}_Method={mipMethod}; "                
            + $"MSIP_Label_{lblID}_SiteId={tenantId}; ";


        newMailItem.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/string/{00020386-0000-0000-C000-000000000046}/msip_labels/0x0000001F", mipPropertyText);
    }
寇鸿
2023-03-14

最后,我想出了如何创建属性架构字符串,以便它返回正确的数据类型。有助于找出数据类型的是使用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

 类似资料:
  • 问题内容: 我正在使用。 使用发送电子邮件(通过)的最佳方法是什么? 问题答案: 有关使用Outlook的解决方案,请参见下面的TheoretiCAL答案。 否则,请使用python随附的smtplib。请注意,这将要求您的电子邮件帐户允许smtp,默认情况下不一定启用此功能。 编辑: 此示例使用保留域,如RFC2606中所述 为了使它真正与gmail配合使用,Doe先生需要进入gmail中的选项

  • 因此,我实际上是试图通过IMAP使用Node连接到Outlook/Exchange电子邮件帐户。 使用旧的Live Connect API,我可以使用OAuth2令牌(https://msdn.microsoft.com/en-us/windows/desktop/DN440163)执行IMAP命令。但这似乎对Exchange帐户不起作用,因为试图用这些帐户执行Oauth流只会带来一个错误“此Mi

  • 当发送带有消息ID头的任何电子邮件时,对它的任何回复都包括对该ID的命名的回复,以及可以命名父消息ID列表的引用,并且电子邮件客户端在线程视图中查看电子邮件列表时使用此信息来构造线程。 我的问题是:所有的电子邮件客户端(Outlook,Gmail,Exchange等)在发送回复到任何现有的电子邮件时,会在电子邮件头中追加回复字段吗? 我参考了RFC 2822,但它在回复中说字段是可选的。 In-R

  • 我被困在一个公司防火墙后面,它不允许我通过Java Mail API或Apache Commons电子邮件等传统方式发送电子邮件,甚至不允许我发送给公司内部的其他人(无论如何,这就是我想要的)。但我的Outlook 2010显然可以发送这些电子邮件。我想知道是否有办法通过Java代码自动化Outlook 2010,以便Outlook可以发送电子邮件?我知道像“mailto”这样的东西可以用来弹出带

  • 问题内容: 我创建了具有3个虚拟机的应用程序,并使用Nagios监督所有这些计算机。 我使用nagios通过后缀将电子邮件发送到本地主机上的Outlook,然后使用Java EE应用程序获取了所有邮件,并将其放入数据库中。 如何使用Java EE从MS Outlook中提取所有电子邮件并将其放入数据库中? 我在后缀中使用IMAP将电子邮件发送到本地主机上的Outlook 我有Outlook版本20

  • 问题内容: 我正在为我的Firebase应用程序构建一个管理面板,希望可以更轻松地管理用户。我希望能够通过电子邮件查找用户,然后在必要时将其删除。我了解,如果注册了用户以及他们向其注册了哪个提供程序,则fetchSignInMethods将返回一个值,但是仍然可以查询Authentication树(而非数据库树)以通过电子邮件搜索用户吗?能够从Authentication节点获取与电子邮件相关联的