无法读取PR_SECURITY_FLAGS,获取随机数

时间:2019-02-18 14:11:09

标签: c# outlook vsto outlook-addin

我将尝试从Application_ItemSend上的PR_SECURITY_FLAGS中读取值,以查看邮件是“正常”,“加密”还是“签名”

如果我未加密或未签名发送,每次都会得到0。

但是当我在他们之间切换时,我遇到了问题。

例如:

加密的检查结果1

取消选中已加密,已签名的选中结果34

取消选中已签名,已加密的选中结果33(这不是1吗?)

未选中已加密,未签名的未签名结果32(这不是0吗?)

string PR_SECURITY_FLAGS = @"http://schemas.microsoft.com/mapi/proptag/0x6E010003";

             long str = mailItem.PropertyAccessor.GetProperty(PR_SECURITY_FLAGS);
            Debug.WriteLine(str);

2 个答案:

答案 0 :(得分:0)

您只关心两个位SECFLAG_ENCRYPTED(= 1)和SECFLAG_SIGNED(= 2)

34 = 32 + 2 
33 = 32 + 1

有一个未记录的位标记,其值为32。您必须忽略它,仅检查您知道的位。

答案 1 :(得分:0)

感谢德米特里·斯特雷布连科

由于您必须忽略一些位,因此可与代码一起使用:

string PR_SECURITY_FLAGS = @"http://schemas.microsoft.com/mapi/proptag/0x6E010003";

             long str = mailItem.PropertyAccessor.GetProperty(PR_SECURITY_FLAGS);

            if (str > 31)
            {
                str = str % 32;
            }
                Debug.WriteLine(str);

标志是:

无(= 0)

SECFLAG_ENCRYPTED(= 1)

SECFLAG_SIGNED(= 2)

SECFLAG_ENCRYPTED和SECFLAG_SIGNED(= 3)