首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过EWS (Exchange WebServices)获取所有邮箱-不是我自己的邮箱,还包括共享邮箱和组邮箱

通过EWS (Exchange WebServices)获取所有邮箱-不是我自己的邮箱,还包括共享邮箱和组邮箱
EN

Stack Overflow用户
提问于 2012-02-14 20:18:01
回答 2查看 5.5K关注 0票数 3

谁能向我提供一个.NET (C# / VB)示例,告诉我如何获取我有权访问的所有邮箱?

我只能通过EWS获得我自己的邮箱,而不是我也可以通过Outlook访问的所有其他邮箱。

我没有这些邮箱的名称或id,但是否可以像在Outlook中一样检索所有允许我查看的邮箱?

我正在使用自动发现来获得我的邮箱,像这样:service.AutodiscoverUrl("xxxx@ee.dd") -这可能只会得到我自己的邮箱,而不是所有其他的邮箱?

请帮帮我!?

EN

回答 2

Stack Overflow用户

发布于 2012-03-14 04:22:20

我解决这个问题的方法是将有问题的组邮箱定义为" mailbox“对象,然后获取特定文件夹的FolderID。

  1. 定义邮箱对象

Mailbox("mailbox@yourdomainname.com");

  • Get gpmailbox = FolderID新邮箱(在本例中为收件箱)

gpmailbox);

  • Use gpInbox = FolderId FolderId(WellKnownFolderName.Inbox,在您的正常代码中为FolderID (在本例中,我将获得100条消息)

ItemView ItemView=新邮箱(100);FindItemsResults results =hookToServer.FindItems(新FolderId(WellKnownFolderName.Inbox,gpmailbox),视图);

关键是抓取所需文件夹的FolderID。希望这能有所帮助。

编辑:我也没有注意到我的对象"hookToServer“仅仅是ExchangeService对象。下面是我对它的定义:

代码语言:javascript
复制
        ExchangeService hookToServer = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
        hookToServer.UseDefaultCredentials = true;
        hookToServer.Url = new Uri("TheExchangeServer")

我也使用了这个作为参考:EWS 2007 Group Mailbox Guide

票数 2
EN

Stack Overflow用户

发布于 2021-08-19 12:40:40

您可以通过Using Autodiscover to get user settings完成此操作,这是一个与使用AutodiscoverUrl方法的服务完全不同的服务。

你需要的设置名称是AlternateMailboxes,这将给出你有权访问的所有‘其他’邮箱的集合。然后,您可以添加用户的默认邮箱以获得完整的列表。

在c#中:

代码语言:javascript
复制
using Microsoft.Exchange.WebServices.Autodiscover;  // from nuget package "Microsoft.Exchange.WebServices"

    internal List<string> GetAccessibleMailboxes()
    {
        AutodiscoverService autodiscoverService = new AutodiscoverService("outlook.office365.com");
        autodiscoverService.Credentials = networkCredential;
        var userSmtpAddress = networkCredential.UserName;

        GetUserSettingsResponse userresponse = autodiscoverService.GetUserSettings(
            userSmtpAddress,
            UserSettingName.AlternateMailboxes);

        var alternateMailboxCollection = (AlternateMailboxCollection)userresponse.Settings[UserSettingName.AlternateMailboxes];
        var smtpAddressList = alternateMailboxCollection.Entries.ToList().Select(a => a.SmtpAddress).ToList();

        smtpAddressList.Add(userSmtpAddress);

        return smtpAddressList;
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9276731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档