2011-07-05 5 views
0

質問:メールを開くようにOutlook APIを使用して、有効な.MSGファイルのように見えるものを開いたとき、私は、次のエラーメッセージが表示されます。
エラー

Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.Office.Interop.Outlook.MailItem'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{00063034-0000-0000-C000-000000000046}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).

MSGファイルはOutlookでうまく開き、フォームは標準的なOutlookのメールフォームであることが保証されています。

このエラーの原因としてはどのようなものが考えられますか?


背景:私の同僚の一つは、PSTファイルとして交換局から多数のメールボックスをエクスポートし、その後で満たされ、元のメールボックスに似たファイル構造を生成するためにPSTファイルに対してツールを実行しています。 MSGファイル。例:USERNAME \
\ USERNAMEの\ \
を送ったユーザ名\のINBOX \ USERNAME
\

下書き私は、その後に.MSGファイルと試みるためにこれらのフォルダをスキャン

DELETED USERNAME \ \
Outlook APIを使用してそれらを開きます。

Outlook.Application app = new Microsoft.Office.Interop.Outlook.Application(); 

Outlook.NameSpace ns = app.GetNamespace("MAPI"); 

Outlook.MailItem item = (Outlook.MailItem)ns.OpenSharedItem(EmailPath); 

Subject = item.Subject; 
+0

この例外を生成したコードも参照できますか? –

+0

代わりにOutlook.NoteItemにキャストしてみてください。助けてくれますか? –

+0

@Davide:質問の最後のコードは例外を生成しました – Richard

答えて

0

すべて* OOMのすべてのアイテムオブジェクトは、Typeプロパティを実装しています。返されたオブジェクトをMailItemにキャストするのではなく、リフレクションを使用して動的にそのプロパティを取得します。

OK例外を発生させずに、関心のあるインターフェイスをテストするために、 "as"演算子を使用します。

関連する問題