LINQ to Exchange WebDAV
Created at:
Exchange 2000, 2003, 2007にはWebDAVでアクセスするためのインターフェースがありまして、SQLを含んだXMLを投げつけるとExchangeの中のデータを取り出せたりします。Searching Folders (WebDAV) のような感じですね。まあ2010では廃止されちゃったのですが。
さてExchange 2003のデータを.NET Frameworkのプログラムから取り出したいということがあるわけですが、今までぷちぷちSQL文字列を組み立ててXDocumentでちくちく処理していました。が、なんかめんどくさいしやっぱりLINQ使いたいですよね!!ということでLINQ プロバイダを作ってみました。死にゆくExchange 2003のための誰得LINQプロバイダです。
ダウンロード: Misuzilla.Data.ExchangeWebDav-20100703.zip (Visual Studio 2010, .NET 4)
IQueryable/IQueryProviderまわりを勉強しながらだったので何となく動くところまでしかやってないので細かいとこはアレなのと、Exchange 2003でしか動作確認していないので多分2000とか2007だとそのままでは動かないかもしれません。
使い方はExchangeDavQuerySampleを見てもらえればわかるのですが、次のようなコードでメールの一覧を取ってこれたりします。
|
これを実行すると以下のような結果が出てきます。
---- Query: 2010/07/03 15:57:34 ---- BaseUrl: http://192.168.0.36/exchange/yui/受信トレイ/ Start: 0, End: 49 SQL: SELECT "urn:schemas:httpmail:subject", "urn:schemas:mailheader:from", "urn:schemas:mailheader:to" FROM SCOPE ('SHALLOW TRAVERSAL OF "http://192.168.0.36/exchange/yui/受信トレイ/"') WHERE (NOT(("DAV:isfolder" = true)) AND NOT(("DAV:ishidden" = true))) ORDER BY "DAV:creationdate" DESC—- Query End: 135.0077ms —-
Subject: 2010年夏合宿
From: "Tsumugi Kotobuki" <mugi@k-on.local>
To: "Yui Hirasawa" <yui@k-on.local>, "Azusa Nakano" <azunyan@k-on.local>, "Ritsu
Tainaka" <ritsu@k-on.local>, "Mio Akiyama" <mio@k-on.local>Subject: とんちゃんの写真の件
From: "Yui Hirasawa" <yui@k-on.local>
To: "Azusa Nakano" <azunyan@k-on.local>, "Tsumugi Kotobuki" <mugi@k-on.local>Subject: test
From: "Yui Hirasawa" <yui@k-on.local>
To: "K-ON Club -Internal" <K-ONClub-Internal@k-on.local>
更新などには別途何か必要なのですがそうでなくても、データ取得が簡単にできるようになるので便利だと思います。どうぞご利用ください。