Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从Outlook加载项访问共享日历中的私人约会_C#_Outlook_Vsto_Exchangewebservices - Fatal编程技术网

C# 从Outlook加载项访问共享日历中的私人约会

C# 从Outlook加载项访问共享日历中的私人约会,c#,outlook,vsto,exchangewebservices,C#,Outlook,Vsto,Exchangewebservices,我在C中开发了一个Outlook VSTO插件。我需要从共享日历中读取现有约会以查看繁忙时段。我拥有所有共享日历的发布编辑器权限,它可以无缝地处理非私人约会 我唯一的问题是CalendarFolder.Items集合不包含具有olPrivate或olPersonal敏感度设置的约会项目。 而内置的Outlook日历视图则使用小锁定图标显示这些项目 我知道私人约会只显示开始和结束时间,这对我来说已经足够了 基础Exchange server版本为2013。我们使用Outlook 2013和2016

我在C中开发了一个Outlook VSTO插件。我需要从共享日历中读取现有约会以查看繁忙时段。我拥有所有共享日历的发布编辑器权限,它可以无缝地处理非私人约会

我唯一的问题是CalendarFolder.Items集合不包含具有olPrivate或olPersonal敏感度设置的约会项目。 而内置的Outlook日历视图则使用小锁定图标显示这些项目

我知道私人约会只显示开始和结束时间,这对我来说已经足够了

基础Exchange server版本为2013。我们使用Outlook 2013和2016

你知道这是什么原因吗

多谢各位

更新:

最后,我通过使用找到了这个问题的解决方案


这是故意的。这些约定没有什么特殊之处,它们的属性仍然可以使用扩展的MAPI C++或Delphi访问。如果使用是一个选项,它包装扩展MAPI并可从任何语言使用,则可从中检索的对象将返回所有可用属性


如果您使用“单击IMessage”按钮或“单击iMap文件夹”按钮查看MAPI级别的数据,并从GetContentsTable选项卡打开约会,您是否可以看到这些数据?

谢谢您,Dimitry,我的Outlook Spy做得很好!不,在这种情况下我不能使用OutlookSpy,因为我甚至无法选择日历文件夹中的项目,它根本不会获得焦点。您仍然可以单击IMAPIFolder,转到GetContentsTable选项卡,然后从那里打开约会。啊,是的,现在我可以看到它了。左侧列为IPM.约会。PR_SENSITIVITY的值为2 SENSITIVITY_PRIVATE。PR_START_DATE和PR_END_DATE具有有意义的值。最后,我使用EWA管理的API 2.0解决了这个问题。我会给我的问题一个单独的答案,并包括代码。感谢您的帮助。很抱歉输入错误:我指的是EWS,Exchange Web Services。请记住,EWS要求您提供凭据,而且,由于您使用的是联机邮箱,因此数据可能与您在Outlook中看到的数据不同步。数据在本地,您只需使用扩展MAPI或兑换绕过OOM。是的,我知道,谢谢。在我目前的情况下,这是一个可以接受的妥协。
using Microsoft.Exchange.WebServices.Data;
// ...... 
ExchangeService EWSService = new ExchangeService();
EWSService.Credentials = new WebCredentials("EXCHUser", "EXCHPW");
EWSService.Url = new Uri("https://...../EWS/Exchange.asmx");

Mailbox primary = new Mailbox(Tools.MainWindow.SelectedConsultant.Email);
var calendar = Microsoft.Exchange.WebServices.Data.CalendarFolder.Bind(EWSService, 
               new FolderId(WellKnownFolderName.Calendar, primary));
ItemView cView = new ItemView(100);

// Limit the properties returned to the appointment's subject, 
//                       start time, end time and sensitivity.
cView.PropertySet = new PropertySet(AppointmentSchema.Subject, 
                                    AppointmentSchema.Start, 
                                    AppointmentSchema.End, 
                                    AppointmentSchema.Sensitivity);

// Filter by sensitivity and retrieve a collection of appointments by using the item view.
String SearchFilterValue = Sensitivity.Private.ToString();
SearchFilter.IsEqualTo filter = new SearchFilter.IsEqualTo(AppointmentSchema.Sensitivity, SearchFilterValue);
FindItemsResults<Item> appointments = calendar.FindItems(filter, cView);
foreach (Appointment a in appointments)
{
    if (a.Sensitivity == Sensitivity.Private)
    {
        // Do what you want with the matched item
    }
}
// ......