我可以不再忽视用户的操作。他们想要一个任务调度系统,在某些时候我必须提供。我正在考虑制作自己的(不能很难),但是用户会有两个并排的任务管理系统,因为他们已经使用Outlook进行同样的事情。
就Outlook日历/任务集成而言,我发现了两种可能的方法:
1)使用JavaScript和自动化
我似乎记得可以在JavaScript中进行自动化。
PROS:
CONS:
2)使用某些.NET API直接与Exchange Server交互
Intranet使用单点登录,因此希望这会使安全问题更容易。
PROS:
CONS:
与往常一样,我喜欢站在巨人的肩膀上。任何曾经走过这条道路的人都可以给我一些指导吗?
答案 0 :(得分:7)
我们最近使用Exchange Web Services Managed API为我们的Intranet应用程序进行了同样的集成。这将成为第二种选择的一种方式。我从来没有尝试使用JavaScript,所以不知道。
关于评论1的查询:您需要一个AD用户,您将用它来模拟和使用其他用户帐户。请参考以下示例:
假设我有一个名为fabrikam\myappname
的Active Dir帐户,密码为Fabi$Gre@t2010
void CreateFolder(string targetUserEmail) {
string appName = "myappname";
string appPassword = "Fabi$Gre@t2010";
string emailDomain = "fabrikam";
string appEmail = string.Format("{0}@{1}.com", appName, emailDomain);
ExchangeService service = new ExchangeService();
service.Credentials = new NetworkCredential(appName, appPassword, emailDomain);
service.AutodiscoverUrl(appEmail);
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, targetUserEmail);
Folder newFolder = new Folder(service);
newFolder.DisplayName = "TestFolder1";
newFolder.Save(WellKnownFolderName.Inbox);
}
请查看文章Configuring Exchange Impersonation以使模拟正常运行。
希望有所帮助。
答案 1 :(得分:0)
如果由于某种原因您不想启用模拟(因为它是全局的),您还可以让每个用户与运行应用程序的配置文件(CodeCanvas示例中的appName)共享其日历。一旦他们给出了相应的许可(读/写/编辑),您就可以将约会添加到他们的日历中,如下所示:
myappointment = new Appointment(service);
myappointment.Subject = "subject";
myappointment.Body = "body";
myappointment.Start = myStartTime;
myappointment.End = myStartTime.AddHours(1);
myMailbox = new Mailbox("username@domain.com");
myFolder = new FolderId(WellKnownFolderName.Calendar, myMailbox);
myappointment.Save(myFolder, SendInvitationsMode.SendToNone);
/* get the appointment id so your app can access it later to update or delete */
myexchangeid = myappointment.Id.UniqueId;