2016-09-25 2 views
0

Outlookタスクを作成し、それらをMy Asp.net MVCアプリケーションのユーザータスクフォルダに追加する必要があります。良い選択。
この目標を達成するための他の選択肢は何ですか?C#オフィスの相互運用機能を使用せずにOutlookタスクを作成する

+1

話すには[API](https://msdn.microsoft.com/en-us/library/office/mt674770.aspx)を使用してください直接交換? (決してそれを自分でやったことはない) –

答えて

0

さらに検索した後、私はEWSを使用することに決めました。ので、ここで私は交換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が表示される可能性があるため、無人で非対話型のクライアントアプリケーションまたはコンポーネント(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を参照してください。

関連する問題