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

时间:2010-03-10 18:53:15

标签: exchange-server exchangewebservices ews-managed-api

在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 Managed API实现吗?

3 个答案:

答案 0 :(得分:7)

Folder inboxFolder = Folder.Bind(service, new FolderId(WellKnownFolderName.Inbox, "user1@example.com"));

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

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

答案 1 :(得分:7)

我知道这已经得到了解答但是在回答@ 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)));

希望有所帮助

答案 2 :(得分:6)

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

您应该使用service.ImpersonatedUserId属性。