2011-04-14 2 views
2

특정 폴더에서 Outlook에서 모든 메일을 가져 오기 :내가 특정 폴더에서 Outlook에서 모든 메일을 좀하고 싶습니다

내 폴더 구조 : My folder structure

내가 모든 얻을이 Code을 찾을 수 전망받은 편지함 폴더에 메일 (하지 그림에서받은 편지함!) :

Outlook.Application oApp; 
Outlook._NameSpace oNS; 
Outlook.MAPIFolder oFolder; 
Outlook._Explorer oExp; 

oApp = new Outlook.Application(); 
oNS = (Outlook._NameSpace)oApp.GetNamespace("MAPI"); 
oFolder = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox); 
oExp = oFolder.GetExplorer(false); 
oNS.Logon(Missing.Value, Missing.Value, false, true); 

Outlook.Items items = oFolder.Items; 
foreach (Outlook.MailItem mail in items) 
{ 
    //do someting 
} 

사람이 어떻게 특정 폴더에서 모든 메일을 얻는 방법을 말해 줄래 (L Ike : 늑대 - 서버)?

답변

2

이것이 작동합니다! 다른 작업을 수행하기 전에

MAPIFolder mailsFromThisFolder; 

MAPIFolder mainFolder = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox); 

foreach (MAPIFolder folder in mainFolder.Folders) 
{ 
    GetFolders(folder); 
} 

public void GetFolders(MAPIFolder folder) 
{ 
    if (folder.Folders.Count == 0) 
    { 
      if (folder.Name == "Folder Name") 
      { 
       Console.WriteLine(m.FullFolderPath); 
       mailsFromThisFolder = folder; 
      } 
    } 
    else 
    { 
     foreach (MAPIFolder subFolder in folder.Folders) 
     { 
       GetFolders(subFolder); 
     } 
    } 
} 

Outlook.Items items = mailsFromThisFolder.Items; 
foreach (Outlook.MailItem mail in items) 
{ 
    //do someting 
} 
+1

하위 폴더를 반복 할 이유가 없습니다. Folders.Item은 정수 인덱스 (1부터 Count까지) 또는 하위 폴더 이름 –

+0

을 가져옵니다. "foreach (항목의 Outlook.MailItem 메일)"를 시도 할 때 오류가 발생했습니다. 'System .__ ComObject'유형의 COM 개체를 캐스팅 할 수 없습니다. 인터페이스 유형은 'Microsoft.Office.Interop.Outlook.MailItem'입니다. – Hitsa00

1
  1. 로그온 와야합니다.
  2. 다음

    같은

    사용 뭔가

    oFolder = oNS.GetDefaultFolder (Outlook.OlDefaultFolders.olFolderInbox); oSubfolder = oFolder.Folders.Item ("wolfy-server");

관련 문제