我有一小段连接到Exchange的代码来获取特定帐户的约会。此帐户没有邮箱。
Dim service As New ExchangeService(ExchangeVersion.Exchange2010_SP2)
service.Credentials = New NetworkCredential("userID", "password")
service.AutodiscoverUrl("me@work.com")
Dim calView As New CalendarView(DateTime.Today, DateTime.Today.AddYears(2))
calView.Traversal = ItemTraversal.Shallow
calView.PropertySet = New PropertySet(BasePropertySet.FirstClassProperties, ItemSchema.Subject, AppointmentSchema.Location)
Dim mtgs As FindItemsResults(Of Item) = service.FindItems(WellKnownFolderName.Calendar, calView)
代码在最后一行引发了以下异常。
将请求作为没有邮箱的帐户发出时,必须为任何可识别的文件夹ID指定邮箱主SMTP地址。
我使用service.UseDefaultCredentials = True代替Credentials行运行代码并执行但当然会带回我的约会。有没有解决这个问题?我认为我的另一种方法是说服Exchange管理员为我感兴趣的帐户授予我的帐户模仿权限。
答案 0 :(得分:1)
我发现了我的错误。此帐户拥有某些会议室的日程安排的权限,但没有自己的邮箱(或日历)。因此,FindItems行不应使用" WellKnowFolderName.Calendar",这将是帐户的日历。相反,它应该使用新的FolderID对象,该对象指定要搜索的会议室的日历文件夹。
Dim _cal As New FolderId(WellKnownFolderName.Calendar, New Microsoft.Exchange.WebServices.Data.Mailbox(room))