1

我有一小段代码可以连接到 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 管理员授予我感兴趣的帐户的帐户模拟权限。

4

1 回答 1

1

我发现了我的错误。此帐户有权访问某些会议室的日程安排,但没有自己的邮箱(或日历)。因此,FindItems 行不应使用“WellKnowFolderName.Calendar”,这将是帐户的日历。相反,它应该使用一个新的 FolderID 对象,该对象指定正在搜索的会议室的日历文件夹。

Dim _cal As New FolderId(WellKnownFolderName.Calendar, New Microsoft.Exchange.WebServices.Data.Mailbox(room))
于 2014-04-12T21:43:29.963 回答