Outlook 2007获取AppointmentRecur属性遇Property not supported异常求解
解决Outlook 2007获取AppointmentRecur属性及区分重复约会类型的问题
问题原因
Outlook 2007原生PropertyAccessor对大体积PT_BINARY属性(如AppointmentRecur)存在访问限制,直接通过DASL路径读取会抛出"property not supported"异常。
解决方案
使用Redemption库(一款绕过Outlook对象模型限制、直接访问MAPI层的工具)获取AppointmentRecur属性,再解析其中的RecurFrequency字段区分两种重复约会类型。
步骤1:引入Redemption库
通过NuGet或官方渠道添加Redemption引用(支持.NET/COM环境)。
步骤2:获取并解析AppointmentRecur属性
以C#为例:
using Redemption; using Outlook = Microsoft.Office.Interop.Outlook; // 假设已有目标Outlook约会对象 Outlook.AppointmentItem olAppt = ...; // 初始化Redemption会话并关联Outlook会话 RDOSession rdoSession = new RDOSession(); rdoSession.MAPIOBJECT = olAppt.Session.MAPIOBJECT; // 将Outlook约会对象转换为Redemption可操作对象 RDOAppointmentItem rdoAppt = rdoSession.GetRDOObjectFromOutlookObject(olAppt); // 读取AppointmentRecur二进制属性 byte[] apptRecurData = (byte[])rdoAppt.Fields["http://schemas.microsoft.com/mapi/id/{00062002-0000-0000-C000-000000000046}/82160102"].Value; // 解析RecurFrequency:二进制数据第一个字节即为枚举值 byte recurFrequency = apptRecurData[0]; // 区分两种约会类型 bool isDailyWorkdayRecur = (recurFrequency == 0); // 每日工作日模式 bool isWeeklyMonToFriRecur = (recurFrequency == 1); // 每周一至周五模式
关键说明
AppointmentRecur对应MAPI的RECURRENCE结构,第一个字节就是RecurFrequency枚举值:0代表每日(Daily)、1代表每周(Weekly)。- 原生Outlook对象模型无法直接暴露
RecurFrequency,只能通过解析底层MAPI属性获取。
内容的提问来源于stack exchange,提问作者RudiBoy
相关产品推荐
相关产品推荐

