最近、C#を使用して.NETコンソールアプリをコーディングしました。目的は、特定のフォルダー内の電子メールを読み取り、特定の値についてそれらを解析し、データベースに保存することでした。
私が最初にこれをコーディングしたときの電子メールシステムはExchange2003でした。しかし、まもなくExchange 2010にアップグレードすることに気づきました。エルゴ、両方の環境で機能するようにコードを作成しました。
ただし、Exchange 2010への移行後、アプリは壊れています。
このアプリは、EWS APIfor2010の機能を使用します。ExchangeServiceのFindFoldersメソッドを使用してpublicfoldersrootを検索しようとすると、例外がスローされます。コードは次のとおりです。
ExchangeService service = new ExchangeService();
FindFoldersResults findRootFldrs;
service.UseDefaultCredentials = true;
service.AutodiscoverUrl("xxxxx@xxxx.xxx", delegate(string x) {
return true; });
FolderView fview = new FolderView(100);
fview.Traversal = FolderTraversal.Deep;
findRootFldrs = service.FindFolders(WellKnownFolderName.PublicFoldersRoot,
fview);
例外:ErrorInvalidSchemaVersionForMailboxVersion
、別名:
要求されたメールボックスは、指定されたRequestServerVersionをサポートしていません
私が試みた:
exchangeserviceを2007に設定します(例外をスローします:「内部サーバーエラーが発生しました。操作は失敗しました。」)
パブリックフォルダへの最高レベルの許可を自分に与える(効果なし)
クレデンシャルを手動で設定する(効果なし)
Outlook2007でパブリックフォルダを表示できます。publicfoldersrootプロパティは、インテリセンスで使用できます。コードはローカルフォルダーで機能します(受信トレイを解析できます)。
私の現在の考えは、これはExchange 2010の最近のセットアップの設定であると考えています。残念ながら、それは実際には私の分野ではありません。例外は、以前のバージョンのExchangeを使用しようとしていることを示しています。2007に設定すると、コードが失敗し、内部サーバーエラーが発生します。