看不懂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)
我将尝试在 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)