在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实现吗?
答案 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
属性。