5

Outlook の電子メール メッセージを分析し、分析された情報を保存し、後でユーザーが特定の基準を満たすメッセージを開くことができるようにするアプリケーションを構築しています。

各メールからメッセージ ID を抽出し、これをデータベースに保存し、後でメッセージ ID を提供してメッセージを開くように Outlook に依頼することを期待していました。しかし、何かが足りないようです。

Outlook 相互運用 API を介して EntryID を取得できますが、私が知る限り、EntryID は特定のフォルダー (または特定のストア) 内でのみ安定していることが保証されています。メッセージが別のフォルダーに移動されると、EntryID が変更される場合があります。さらに、API では、EntryID でメッセージを検索するときに StoreID を指定する必要があります。繰り返しになりますが、メッセージがストア間で移動された場合、その情報はおそらく無効になります。

私は、上で説明したようなことを行うように見える Office 関連の製品をたくさん見てきました。ストアなどに関係なく、Outlook からアクセスできるメッセージを効率的に検索するにはどうすればよいですか?

現在、私のバックアップ計画は、スキャンした各 Message-ID の EntryID および StoreID 情報を保存し、特定の MessageID について記録したさまざまな EntryID / StoreID の組み合わせを、成功するまですべて試すことです。しかし、これは、Outlook が私のために達成する方法を既に知っているはずの作業のように思えます。

ありがとう、

-パトリック

4

1 に答える 1

2

「しかし、これは、Outlook が私のために達成する方法を既に知っているはずの作業のようです」

そうすべき。しかし、そうではありません。少なくとも、API を使用したときは、明らかなものは見つかりませんでした。おそらく理由は非常に単純です。Message-ID は Outlook 自体には意味がないため、プロパティとして保存することは製品に実装されていませんでした。

さて、最も明白な方法は、すでに行っていることを行うことだと思います。Message-ID と StoreID - EntryID ペアの間の関連付けを保存します。これにより、保存されているすべてのメールのリストをたどることなく、目的の電子メールにすばやくアクセスできます。ここで、Message-ID がまだ正しいかどうかを明らかに確認する必要があります。正しくない場合は、すべてのメールをループします。

ところで、なぜ Message-ID ごとに複数の StoreID - EntryID のペアを格納しているのかよくわかりません。メールが Outlook に保存されるのは一度だけだと思う​​ので、Message-ID ごとに 1 つのペアで十分です。このペアが廃止された (メールが別のフォルダー/ストアに移動した) 場合は、更新するだけです。

注:プロパティCreationTimeにアクセスする方が簡単で高速ではないでしょうか? MailItem.SenderEmailAddress2 つの異なるメールがこれらのプロパティを共有しているのを見るのは奇妙です。そのため、メッセージ ID を手動で抽出する必要なく、メールを一意に識別する方法の 1 つです。

于 2010-06-26T01:36:58.773 に答える