2016-09-25 66 views
0

我需要创建Outlook任务,并将其添加到我的Asp.net MVC应用程序中的用户任务文件夹,并经过一些研究后,我发现使用Office Interop是和选项,但不是好的选择。
所以我需要知道什么是其他选项来实现这一目标?C#创建Outlook任务,而不使用办公室interop

+1

也许使用[API](https://msdn.microsoft.com/en-us/library/office/mt674770.aspx)与直接交换? (从未自己做过) –

回答

0

经过更多搜索,我决定使用EWS。所以这里就是我实现创建使用Exchange Web服务任务:

var exchange = new ExchangeService(ExchangeVersion.Exchange2010_SP2); 
exchange.Credentials = new WebCredentials("username", "password", "domain"); 
exchange.AutodiscoverUrl("[email protected]"); 

// see #1 
// exchange.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, [email protected]"); 

var task = new Task(exchange); 
task.Subject = "foo"; 
task.Body = new MessageBody("bar"); 
task.Status = TaskStatus.InProgress; 
task.StartDate = PurchaseOrder.OrderDate; 
task.DueDate = PurchaseOrder.DeliverDate; 
task.Save(); 

// see #2 
// task.Save(new FolderId(WellKnownFolderName.Tasks, "[email protected]")); 

根据this article可以保存在用户的工作文件夹交换服务配置了任务。

#1:,除非你有冒充许可

#2:你的目标用户委派的任务给你。
在我的情况下,我似乎使用#2 ...

1

由于Office可能会展示,Microsoft目前不推荐并且不支持来自任何无人参与的非交互式客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT服务)的Microsoft Office应用程序自动化Office在此环境中运行时不稳定的行为和/或死锁。

如果您正在构建一个在服务器端上下文中运行的解决方案,则应该尝试使用对于无人执行安全的组件。或者,您应该尝试找到允许至少部分代码运行客户端的替代方案。如果您从服务器端解决方案使用Office应用程序,则该应用程序将缺少成功运行所需的许多必要功能。此外,您将面临整体解决方案稳定性的风险。请阅读Office文章的Considerations for server-side Automation中的更多内容。

作为一种解决方法,您可以考虑使用Outlook基于的低级API - 扩展MAPI或任何其他围绕该API的包装(例如Redemption)。

如果您仅处理Exchange邮箱,则可能会考虑使用EWS,请参阅EWS Managed API, EWS, and web services in Exchange以获取更多信息。

相关问题