4

私は非常に特別な問題を抱えています。

Outlook でメールを作成する場合、システムのデータベース ID を含む UserProperty を追加して、メールを代表するデータベース項目にリンクできるようにします。各メールボックスのメールを読み込んで自動的にインポートするサービスでは、ExtendedPropertyDefinitions を使用してこのプロパティを読み取ることができます。これまでのところ、すべて順調です...

ユーザーが Outlook でメッセージを転送すると、Olk は UserProperty を新しいメッセージにコピーします。そして今、私の問題が始まりました。これで、サービスは新しいメッセージがデータベースにもリンクされていると判断し、DB エントリを新しい本文と新しい件名で更新します。

メッセージが転送されたものであるかどうかを確認する方法や、ユーザープロパティを転送された (新しい) メッセージにコピーしないように Outlook に指示する方法はありますか?

どうも。ジェイ

私たちが考えたが、私たちのケースでは機能していません
- シンプルなタグ linke "fromSystem" を含む 2 番目のユーザー プロパティです。これもコピーされるからです。
- サブジェクトと本文から計算されたハッシュサムを含む 2 番目のユーザー プロパティ。どちらもユーザーによって変更される可能性があります。メッセージを作成し、すべてのプロパティを追加して表示するだけです。この時点から、サービスがメールを処理するまで、メールに何が起こっているかを制御できなくなります。

4

1 に答える 1

7

EWS を使用するサービスは、データベースをチェックし、長さが 22 バイトConversationIndexの場合にのみデータベースを更新する必要があります(元のソース メッセージ)。転送メールと返信メールは、 22 バイトを超える拡張に5 バイト ( 10 文字) を追加し続けます。ConversationIndex

サンプル ConversationIndexes

オリジナル: 01CDD15D80E51C1D4522172840ACA96287DA28A15D97
返信: 01CDD15D80E51C1D4522172840ACA96287DA28A15D970000018630
転送: 01CDD15D80E51C1D4522172840ACA96287DA28A15D970000018630000000FC30

ConversationIndexConversationTopic(基本的に GUID + タイムスタンプ)の順番を表します。MSDN の会話の操作を参照してください。MSDN here で明示的に定義されていConversationIndexます。

 if (message.ConversationIndex.Length == 22)
 {
   // update DB body, subject, etc.
 }

EmailMessageSchema.ConversationIndexまた、その値にアクセスする前に、必ず をロードしてください。

于 2012-12-03T14:00:25.720 に答える