看不懂PR_SECURITY_FLAGS,获取随机数

Can't read PR_SECURITY_FLAGS, get random numbers

我将尝试在 Application_ItemSend 上读取 PR_SECURITY_FLAGS 的值,看看邮件是 "Normal"、"Encrypted" 还是 "Signed"

如果我发送时没有加密或签名,我每次都会得到 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);

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

34 = 32 + 2 
33 = 32 + 1

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

感谢 Dmitry Streblechenko

由于您必须忽略一些位,因此它适用于代码:

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);

标志是:

NONE (=0)

SECFLAG_ENCRYPTED (=1)

SECFLAG_SIGNED (=2)

SECFLAG_ENCRYPTED & SECFLAG_SIGNED (=3)