【问题标题】:Get all user's data from Exchange Server 2010从 Exchange Server 2010 获取所有用户的数据
【发布时间】:2013-07-05 07:54:14
【问题描述】:

我正在尝试开发一个用于将日历和联系人同步到另一个系统的应用程序。该应用程序是用 C# 编写的,但我不明白如何在不知道每个人的凭据的情况下获取所有用户的日历和联系人。应用程序不应轮询信息,而是将其像事件一样发送到我的应用程序。

我已经在 MS 网站上进行了搜索,下载了“Exchange 2013 101 代码示例”,并成功编写了一个向其他用户发送电子邮件的脚本,但身份验证仅适用于用户凭据。

是否可以创建一个“主”用户来读取给定用户列表的所有日历和联系人? ExchangeServer 可以调用我的应用程序并发送信息(例如使用 SOAP),还是我必须轮询?


更新:

我创建了一个对所有内容都拥有完全权限的用户,但我不知道如何从服务器读取数据,因为“主”用户的日历是空的。当我访问 OWA 并选择模拟查看某人的日历时,我可以看到约会。

权限代码:

Get-Mailboxdatabase | Add-ADPermission -AccessRights ExtendedRight -ExtendedRights Receive-As, Send-As -User "<SuperAccount>"

这个共享日历:

Add-MailboxFolderPermission –Identity <MailboxFolderId>:\Calendar -AccessRight ReadItems -User <SuperAccount>

如何通过我的主用户获取用户的日历?

【问题讨论】:

    标签: c# .net-4.0 exchangewebservices exchange-server-2010 ews-managed-api


    【解决方案1】:

    我们使用的方法是,所有用户都必须与拥有完全编辑权限的“主”用户共享他们的日历。此用户必须在服务器的域中创建。我们的代码以该主用户身份登录到 Exchange,然后它可以访问所有日历。

    我没有经验的另一种方法是Impersonation。 Exchange 允许您充当其他用户。为此,您必须在 Windows 下拥有模拟权。

    【讨论】:

    • 我终于用模拟解决了这个问题。这真的很简单,但非常强大,我可以保留我的其余代码,因为它只是多行。 - 非常感谢!
    【解决方案2】:

    根据 Jan Doggen 的回答,我在另一个 StackOverflow 线程中找到了解决方案,可以在这里找到: EWS: Access shared calendars

    Seph 的答案是在 Visual Basic 中,但它可以很容易地转换为 C#:

    using Microsoft.Exchange.WebServices.Data;
    
    DateTime startTime = new DateTime(2013, 1, 1);
    DateTime endTime = new DateTime(2013, 12, 31);
    
    var cal = new FolderId(WellKnownFolderName.Calendar, new Mailbox("other user's email"));
    var calendarView = new CalendarView(startTime.Date, endTime.Date.AddDays(1));
    
    foreach (var appointmentItem in service.FindAppointments(cal, calendarView))
    {
        Console.WriteLine(appointmentItem.Subject);
    }
    

    【讨论】:

    • 当我尝试使用此代码时,我得到“在商店中找不到指定的文件夹。”
    • 我很抱歉我迟到的答案。不幸的是,我不再从事这个项目,因为这只是一份暑期工作,而且我是一名学生。您是否使用相同版本的 Exchange Server? WellKnownFolderName.Calendar 是适用于您的服务器的通用文件夹名称。您使用的是正确版本的 ews-managed-api 吗?您是否在 Visual Studio 中选择了正确的 Exchange 版本?
    • NP,我想我已经弄明白了,尽管我已经好几个月没有从事这个项目了。不过感谢您的回复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 2012-03-10
    • 1970-01-01
    • 2014-06-16
    • 2018-12-20
    • 1970-01-01
    相关资源
    最近更新 更多