我将尝试从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);
答案 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)