2012-02-10 10 views
0

私は仕事で私のチームのためにC#で仕事管理アプリケーションを書いています(私たちの愚かな雇用主は私たちに適切なツールを教えてくれなかったので)。 Outlookで新しいメッセージを確認する必要があり、最後にチェックしてからメッセージを取得する必要があります。Outlookから最新のメッセージを受け取る方法

Items.Restrict()メソッドを試して、フィルタ"[ReceivedTime] > ' "+lastUpdate+" ' "を使用しましたが、正しく動作していないようです。私は恐らく普遍的な時間、文字列、米国の日付/時刻形式に変換されたlastUpdateの可能なすべての形式を試してみました。何も正しく動作しません。それはまったく異なる時間範囲で私にメッセージを与えるか、まったくメッセージを見つけることができません。

私が間違っていることを知っていますか?私もAdvancedSearch()を使用することを考えていますが、それは簡単に実装することができますか?あなたの返信を前にありがとう!

+0

アイテムを処理した後にアイテムを別のフォルダに移動するだけで済みませんか?そうすることで、受信トレイフォルダ内の唯一のメッセージは、処理していないメッセージであることが分かり、このフォルダを小さく保ちます。 – dash

+0

残念ながら私はメッセージを移動することはできません。また、他のユーザーがOutlook自体のメッセージを移動できるので、更新サイクルを行うたびに各フォルダの最新のメッセージを確認する必要があります。 – Val

答えて

1

これでもう少し時間が無駄になり、アプリケーション全体を最初から書き直すことを強いられない単純なソリューションが見つかりました。

最新のメッセージを取得するためにItems.Restrict()メソッドを使用するのではなく、Items.Sort()を使用してReceivedTimeでソートし、最後の更新タイムスタンプよりも古いメッセージが見つかるまでItemのリストから最初のメッセージをループします。

例:、とにかくItems.Sort()のみExchangeメールボックスで動作しているようですので、

givenFolder.Items.Sort("[ReceivedTime]", true); //true means, it will be descending (latest at the beginning) 

このソリューションは、残念ながら、欠点を持っている(通常のPOPメールボックスにないソート正しくない)が、私は、Exchangeのためにそれを必要としますそれで私にとっては十分です。

OutlookのAdvancedSearchまたはMAPIテーブルを使用することもできますが、試していないと思います。

-1

メールサーバーに直接接続し、簡単な接続でPOP3またはIMAPコマンドを発行しないのはなぜですか?私は以前にtelnetでこれをやっていました。コマンドは非常にシンプルで、ウィンドウの下でも動作するはずです。 (for ref see this

Outlookフォルダを直接開くこともできますが、これはクライアントバージョンのOutlookが実際に実行され、サーバーからメッセージをダウンロードしていることを意味します。

新しいメールがあるかどうかを知らせるプログラムBiffは、biffと呼ばれています(MSプラットフォームにも存在すると思われます)。

+0

1. Exchangeメールボックスなので、サーバーに直接接続するのは簡単ではありません 2.メッセージを特定の方法でマークする必要があるため、私たちはOutlookを使用する必要があります。私たちはOutlookのクライアントバージョンを持っています。私たちはフォルダ内の各MailItemを繰り返し処理する必要があります。数千のメールがある場合は時間がかかります。少数のレットのメッセージを取得する必要があるときには役に立たないです。 4.私は、新しいメールが届きました。私は自分自身で新しいメッセージが必要です!そして、私たちはアウトルックからそれらを必要としています。なぜなら、Outlook – Val

+0

を使ってテルネットでいくつかのコマンドを試してみる必要があるからです。 ExchangeはPOP3とIMAPを「知っている」。 MAPI経由で直接アクセスすることも可能です。 Visual Basicを使用した古い古いオートメーションも良い選択です。 – BigMike

+0

この時点では、Exchangeと直接通信して新しいメッセージを照会するためにMAPIコントロールを使用することをお勧めします。その後、IDを使用してPSTファイルに直接アクセスし、必要に応じてマークします。 MAPI経由でExchangeに接続することはそれほど難しくありません。Outlookを稼働させていれば、それを行うことができます。 – BigMike

1

はない直接の回答が、Exchange Webサービス管理API 1.2 SDKhttp://msdn.microsoft.com/en-us/library/dd633710(v=EXCHG.80).aspxを見てみましょう。対処がはるかに簡単で、柔軟性が高く、Outlookに依存しません。

EWSマネージAPIにMAPI Viewerの http://msdn.microsoft.com/en-us/library/dd633659(v=exchg.80).aspx

ルックを使用してEWSマネージAPI http://msdn.microsoft.com/en-us/library/dd633671(v=exchg.80).aspx

検索フィルタを使用した作業を使用して検索を使用した作業。マイクロソフトは1つを提供し、他にもあります。ビューアを使用すると、フォルダとアイテムのプロパティを見て、どのようにフィルタリングする必要があるかを見ることができます。

さらに、の例は、EWS Managed APIを使用して検索フィルタを使用して作業することになります。

関連する問題