2011-01-10 25 views
0

HI錯誤,而使用C#

當我試圖從Outlook的收件箱中讀取數據,我提示以下錯誤:

無法投類型的COM對象系統.__ ComObject從Outlook讀取收件箱中的物品'接口類型'Microsoft.Office.Interop.Outlook.PostItem'。此操作失敗,因爲IIC「{00063024-0000-0000-C000-000000000046}」接口的COM組件上的QueryInterface調用失敗,原因是出現以下錯誤:沒有支持此接口(來自HRESULT的異常:0x80004002(E_NOINTERFACE)) 。

下面是我的C#代碼

Microsoft.Office.Interop.Outlook.Application app = null; 
Microsoft.Office.Interop.Outlook._NameSpace ns = null; 
Microsoft.Office.Interop.Outlook.PostItem item = null; 
Microsoft.Office.Interop.Outlook.MAPIFolder inboxFolder = null; 
Microsoft.Office.Interop.Outlook.MAPIFolder subFolder = null; 

try 
{ 
    app = new Microsoft.Office.Interop.Outlook.Application(); 
    ns = app.GetNamespace("MAPI"); 
    ns.Logon(null,null,false, false); 

    inboxFolder = ns.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox); 
    Console.WriteLine("Folder Name: {0}, EntryId: {1}", inboxFolder.Name, inboxFolder.EntryID); 
    Console.WriteLine("Num Items: {0}", inboxFolder.Items.Count.ToString()); 
    Console.ReadLine(); 

    for (int i = 1; i <= inboxFolder.Items.Count; i++) 
    { 
     item = (Microsoft.Office.Interop.Outlook.PostItem)inboxFolder.Items[i]; 
     Console.WriteLine("Item: {0}", i.ToString()); 
     Console.WriteLine("Subject: {0}", item.Subject); 
     Console.WriteLine("Categories: {0}", item.Categories); 
     Console.WriteLine("Body: {0}", item.Body); 
     Console.WriteLine("HTMLBody: {0}", item.HTMLBody); 
    } 
} 
catch (System.Runtime.InteropServices.COMException ex) 
{ 
    Console.WriteLine(ex.ToString()); 
} 
finally 
{ 
    ns = null; 
    app = null; 
    inboxFolder = null; 
} 

由於提前

+0

您是否在收件箱中有預約等? –

回答

1
item = (Microsoft.Office.Interop.Outlook.PostItem)inboxFolder.Items[i]; 
    Console.WriteLine("Item: {0}", i.ToString()); 
    Console.WriteLine("Subject: {0}", item.Subject); 


    Console.WriteLine("Categories: {0}", item.Categories); 
    Console.WriteLine("Body: {0}", item.Body); 
     Console.WriteLine("HTMLBody: {0}", item.HTMLBody); 

更改這一部分作爲

Microsoft.Office.Interop.Outlook.MailItem item = (Microsoft.Office.Interop.Outlook.MailItem)subFolder.Items[i]; 

Console.WriteLine("Item: {0}", i.ToString()); 
Console.WriteLine("Subject: {0}", item.Subject); 
Console.WriteLine("Categories: {0}", item.Categories); 
Console.WriteLine("Body: {0}", item.Body); 
Console.WriteLine("HTMLBody: {0}", item.HTMLBody); 

進一步指

http://www.dotnetspider.com/forum/160348-how-read-items-from-outlook-inbox-subfolders-C-NET.aspx