Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.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#EWS托管API:如何访问共享邮箱而不是我自己的收件箱_C#_.net_Exchangewebservices - Fatal编程技术网

C#EWS托管API:如何访问共享邮箱而不是我自己的收件箱

C#EWS托管API:如何访问共享邮箱而不是我自己的收件箱,c#,.net,exchangewebservices,C#,.net,Exchangewebservices,如何连接到exchange服务器并从共享邮箱(不是我自己的邮箱)读取邮件myname@mycompany.com" 以下是我迄今为止的代码: //Create a service ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1); //Autodiscover end point service.AutodiscoverUrl("somea

如何连接到exchange服务器并从共享邮箱(不是我自己的邮箱)读取邮件myname@mycompany.com"

以下是我迄今为止的代码:

//Create a service
        ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
        //Autodiscover end point
        service.AutodiscoverUrl("someaddress@mycompany.com");


        FindFoldersResults folderSearchResults = service.FindFolders(WellKnownFolderName.Inbox, new FolderView(int.MaxValue));

        Microsoft.Exchange.WebServices.Data.Folder exchangeMailbox = folderSearchResults.Folders.ToList().Find(
            f => f.DisplayName.Equals("NameOfSharedMailboxIwant", StringComparison.CurrentCultureIgnoreCase));

        //Set the number of items we can deal with at anyone time.
        ItemView itemView = new ItemView(int.MaxValue);

        foreach (Microsoft.Exchange.WebServices.Data.Folder folderFromSearchResults in folderSearchResults.Folders)
        {
            if (folderFromSearchResults.DisplayName.Equals("NameOfSharedMailboxIWant", StringComparison.OrdinalIgnoreCase))
            {
                Microsoft.Exchange.WebServices.Data.Folder boundFolder = 
                        Microsoft.Exchange.WebServices.Data.Folder.Bind(service, folderFromSearchResults.Id);

                SearchFilter unreadSearchFilter =
                    new SearchFilter.SearchFilterCollection(
                        LogicalOperator.And, new SearchFilter.IsEqualTo(
                            EmailMessageSchema.IsRead, false));

                //Find the unread messages in the email folder.
                FindItemsResults<Item> unreadMessages = boundFolder.FindItems(unreadSearchFilter, itemView);

                foreach (EmailMessage message in unreadMessages)
                {
                    message.Load();

                   Console.WriteLine(message.Subject);


               }    
                }

我错过了什么?我觉得我就快到了,根据EWS管理的API 2.0文档,这应该可以工作了,但我认为您应该使用FolderId重载来指定要访问的邮箱。例如,如果您的共享邮箱被调用Shared@domain.com然后使用

FolderId SharedMailbox = new FolderId(WellKnownFolderName.Inbox,"Shared@domain.com");
ItemView itemView = new ItemView(1000);
service.FindItems(SharedMailbox,itemView);
也不要用

ItemView ItemView=newitemview(int.MaxValue)

这将不起作用,因为Exchange将限制由于限制而返回的最大项目数。始终分页findItems和findfolders的结果请参见

干杯
Glen

有没有办法列举您所属的所有共享邮箱?我在这里发布了一个后续问题:这个答案不适用于不知名的文件夹名称。
FolderId SharedMailbox = new FolderId(WellKnownFolderName.Inbox,"Shared@domain.com");
ItemView itemView = new ItemView(1000);
service.FindItems(SharedMailbox,itemView);