VB. NET O365 EWS Общий почтовый ящик без папок - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть следующий код, который прекрасно работал до недавней миграции на O365:

        Dim ExServ As New ExchangeService(ExchangeVersion.Exchange2013_SP1) With {
     .Credentials = New WebCredentials("username@mydomain.com", "password"),
    .Url = New Uri("https://outlook.office365.com/ews/exchange.asmx")
        }

    Dim Mailbox As New FolderId(WellKnownFolderName.Inbox, "sharedmailbox@mydomain.co.uk")

    Dim Emails = ExServ.FindItems(Mailbox, New ItemView(10000))

    Dim InboxFolder As Folder = Folder.Bind(ExServ, WellKnownFolderName.Inbox)
    InboxFolder.Load()

    Dim f As New FolderView(50)

    Dim g As FindFoldersResults = InboxFolder.FindFolders(f)

Теперь у меня проблема в том, что при вызове FindFolders отображается число найденных нулевых папок, когда это В почтовом ящике есть пара дюжин папок ...

Я пытался как администратор отменить права доступа, и код прекрасно видит письма в папке "Входящие". Как я уже сказал, все это работало отлично, пока мы недавно не перешли на 365.

Кто-нибудь видел это раньше или есть обходной путь?

1 Ответ

0 голосов
/ 23 апреля 2020

Итак, пару вещей, которые я могу увидеть в первую очередь

  Dim Emails = ExServ.FindItems(Mailbox, New ItemView(10000))

Из-за перетаскивания регулирования это когда-нибудь вернет только 1000 элементов, и вам потребуется страница запроса для получения дополнительных элементов. 1005 * У вас также есть

 Dim Mailbox As New FolderId(WellKnownFolderName.Inbox, "sharedmailbox@mydomain.co.uk")

, который вы используете в своем запросе findItems, однако вы не используете его в запросе FolderBind, который впоследствии будете использовать для поиска папок. Это означает, что запрос FindFolder будет выполняться для почтового ящика учетных данных безопасности, которые вы используете, а не «sharedmailbox@mydomain.co.uk», с которым столкнулся ваш запрос finditems. Если вы хотите, чтобы поиск по папкам запускался для SharedMailbox, вам понадобится

Dim InboxFolder As Folder = Folder.Bind(ExServ, WellKnownFolderName.Inbox,"sharedmailbox@mydomain.co.uk")
...