代码之家  ›  专栏  ›  技术社区  ›  Kyle

使用EWS托管API为其他用户创建约会?

  •  11
  • Kyle  · 技术社区  · 14 年前

    在EWS托管API中,很容易为特定用户创建约会:

    ExchangeService service = new ExchangeService();
    service.Credentials = new NetworkCredentials ( "administrator", "password", "domain" );
    service.AutodiscoverUrl(emailAddress);
    
    Appointment appointment = new Appointment(service);
    appointment.Subject = "Testing";
    appointment.Start = DateTime.Now;
    appointment.End = appointment.Start.AddHours(1);
    appointment.Save();
    

    这将为管理员创建约会。但是假设我想为另一个用户实际创建一个约会(而不是将该用户添加为我的约会的与会者)。这可能通过EWS管理的API实现吗?

    3 回复  |  直到 10 年前
        1
  •  7
  •   matt    13 年前
    Folder inboxFolder = Folder.Bind(service, new FolderId(WellKnownFolderName.Inbox, "user1@example.com"));
    

    也会起作用的。 然后将inboxfolder.id传递给约会。保存调用。更新和删除不需要这个。 最好的答案是使用模拟,但这需要服务器管理员启用它。如果你不使用这种力量,这个方法会让你做你需要的。 注意:运行应用程序的用户必须对目标帐户具有权限,否则将失败(应该如此)。

    在这里找到: http://msdn.microsoft.com/en-us/library/gg274408(v=EXCHG.80).aspx

        2
  •  7
  •   Philip Windsor    11 年前

    我知道这已经得到了回答,但是作为对@aamir评论的回答,您可以使用我刚刚为一个项目做的委托来完成这项工作。

    正如@matt在他的回答中建议的那样,您可以修改约会的保存方法,以指向“其他用户”文件夹,在本例中,该文件夹将是日历。

    代码如下所示

    Appointment appointment = new Appointment(service);
    appointment.Subject = "Testing";
    appointment.Start = DateTime.Now;
    appointment.End = appointment.Start.AddHours(1);
    appointment.Save(new FolderId(WellKnownFolderName.Calendar, new Mailbox(_EmailAddress)));
    

    希望能帮上忙

        3
  •  6
  •   Kyle    14 年前

    我从这篇文章中了解到: http://msdn.microsoft.com/en-us/library/dd633680(EXCHG.80).aspx

    你应该使用 service.ImpersonatedUserId 属性。