将ASP.NET Intranet应用程序与Outlook日历集成的技术

Dav*_*vid 7 .net asp.net outlook exchange-server ews-managed-api

我不能再忽视用户的操作了.他们想要一个任务调度系统,在某些时候我必须提供.我正在考虑制作自己的(不能很难),但是用户将拥有两个并排的任务管理系统,因为他们已经使用Outlook进行相同的操作.

在Outlook日历/任务集成方面,我发现了两种可能的方法:

1)使用JavaScript和自动化

我似乎记得在JavaScript中进行自动化是可能的.

优点:

  • 我以前做过自动化.

缺点:

  • 自动化太可怕了!
  • 一些持久性(Outlook实体)是客户端代码的责任,其余的是服务器端代码的责任.这感觉太可怕了.

  • IT部门可能存在的安全问题/ 阻塞.

2)使用一些.NET API直接与Exchange Server交互

Intranet使用单点登录,因此希望这会使安全问题更容易.

优点:

  • 所有持久性代码都是服务器端的.

缺点:

  • 我甚至不知道存在这样的API.

和往常一样,我喜欢站在巨人的肩膀上.任何曾经走过这条道路的人都可以给我一些指导吗?

小智 7

我们最近使用Exchange Web服务托管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);
}
Run Code Online (Sandbox Code Playgroud)

请查看文章配置Exchange模拟以使模拟正常工作.

希望有所帮助.