Не удается получить встречи от Exchange для учетной записи без почтового ящика
У меня есть небольшой кусочек кода, который подключается к 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)
Код вызывает следующее исключение в последней строке.
При отправке запроса в качестве учетной записи, у которой нет почтового ящика, необходимо указать основной SMTP-адрес почтового ящика для любых выделенных идентификаторов папок.
Я запустил код с сервисом.UseDefaultCredentials = True вместо строки Credentials, и он выполняется, но, конечно, возвращает мои встречи. можно ли это исправить? Я думаю, что моя альтернатива состоит в том, чтобы убедить администраторов Exchange предоставить моей учетной записи Олицетворение привилегий для учетной записи.
1 ответ
Я нашел свою ошибку. Эта учетная запись имеет права на расписания для некоторых комнат собраний, но не имеет собственного почтового ящика (или календаря). Поэтому строка FindItems не должна использовать "WellKnowFolderName.Calendar", который будет календарем учетной записи. Вместо этого он должен использовать новый объект FolderID, который указывает папку календаря для комнаты поиска, в которой выполняется поиск.
Dim _cal As New FolderId(WellKnownFolderName.Calendar, New Microsoft.Exchange.WebServices.Data.Mailbox(room))