2016-09-25 60 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以獲取更多信息。

相關問題