2013-08-24 1 views
0

콘솔 응용 프로그램에서 코드를 실행할 때 정확한 결과를 얻을 수 있지만 Windows 양식에서 Outlook.Application app = new Outlook.Application();C#에서 Outlook에서 메일을 가져올 때 COM 예외를 제거하는 방법은 무엇입니까?

예외가 "CLSID와 구성 요소의 COM 클래스 팩터 리를 검색한다 {0006F03A-0000-0000-C000-000000000046}는 다음 오류 때문에 실패했습니다 : 80080005 서버 실행 (: 0x80080005 (CO_E_SERVER_EXEC_FAILURE) HRESULT에서 예외를) 실패했습니다. " 나는 개인 바깥으로 Outlook.Application의 인스턴스를 생성하여 해결책을 찾을 수 있습니다

if (comboBoxFolder.SelectedIndex == 0) 
     { 
      setInboxView(); 

       Outlook.Application app = new Outlook.Application(); 
       Outlook.NameSpace outlookNs = app.GetNamespace("MAPI"); 
       Outlook.MAPIFolder emailFolder = outlookNs.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox); 

       foreach (Outlook.MailItem item in emailFolder.Items) 
       { 
        mails[0] = item.SenderEmailAddress; 
        mails[1] = item.To; 
        mails[2] = item.Subject; 
        mails[3] = Convert.ToString(item.ReceivedTime); 

       } 

답변

0

.. 그것은 그 예외를 제거

string[] mails = new string[4]; 
    ListViewItem itm; 
    Private Outlook.Application app = new Outlook.Application(); 

    private void comboBoxFolder_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (comboBoxFolder.SelectedIndex == 0) 
     { 

       Outlook.NameSpace outlookNs = app.GetNamespace("MAPI"); 
       Outlook.MAPIFolder emailFolder = outlookNs.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox); 

       foreach (Outlook.MailItem item in emailFolder.Items) 
       { 
        mails[0] = item.SenderEmailAddress; 
        mails[1] = item.To; 
        mails[2] = item.Subject; 
        mails[3] = Convert.ToString(item.ReceivedTime); 

        itm = new ListViewItem(mails); 
        listViewEmail.Items.Add(itm); 

       } 



     } 
    }