2014-10-08 2 views
0

나는 아웃룩 저장소에서 특정 폴더를 얻을이 루틴이 : 재산입니다 제가 속성 모든 폴더의 태그하지만,받은 편지함, 누구나 알고있는MAPI 속성 Outlook에서받은 편지함 폴더를 얻기 위해 2007

// Property Tag of SentFolder 
string propertyName = "http://schemas.microsoft.com/mapi/proptag/0x35E40102"; 

Outlook.Folders folders = store.GetRootFolder().Folders; 
object entry = propertyAccesor.GetProperty(propertyName); 
defaultFolderEntryID = propertyAccesor.BinaryToString(entry); 

if (!string.IsNullOrEmpty(defaultFolderEntryID)) 
{ 
    foreach (Outlook.Folder defaultFolder in folders) 
    { 
     if (defaultFolder.EntryID == defaultFolderEntryID) 
     { 
     folder = defaultFolder; 
     break; 
     } 
     else 
     Marshal.ReleaseComObject(defaultFolder); 
    } 
} 

Marshal.ReleaseComObject(folders); 
Marshal.ReleaseComObject(store); 

을 받은 편지함 폴더의 태그? 또는 "받은 편지함"이라는 단어를 사용하지 않고받은 편지함 폴더를 가져 오는 다른 방법.

은 현재 내가받은 편지함 폴더를 얻기 위해이 루틴을 사용하지만 작업은 Outlook 언어에 따라 달라집니다 :

public Outlook.Folder GetInboxFolder(Outlook.Store store) 
{ 
    Outlook.Folders folders = store.GetRootFolder().Folders; 

    foreach (Outlook.Folder f in folders) 
    { 
     if (f.Name.ToUpper().Contains("INBOX")) 
      return f; 
    } 

    return null; 
} 

전망은 영어가 아닌 다른 언어에있는 경우

는이 루틴이 작동하지 않습니다.

답변

0

먼저받은 편지함에 해당 태그가 없습니다. 여러 개의받은 편지함이있을 수 있습니다. 예 : 일반 메일 메시지 (IPM.*)는받은 편지함 폴더로 이동하지만 메시지는 IPC.*은 저장소의 루트 폴더 (최종 사용자에게 보이지 않음)로 이동합니다.

확장 MAPI 수준 (C++ 또는 Delphi)에서 IMsgStore :: GetReceiveFolder를 호출하거나 IMsgStore :: GetReceiveFolderTable에서 반환 된 MAPI 테이블을 사용해야합니다. OutlookSpy에서 재생할 수 있습니다 (IMsgStore 버튼 클릭).

Outlook 2010 이상을 사용하는 경우 Store .GetDefaultFolder (olFolderInbox) 메서드를 사용할 수 있습니다.

Outlook 2007이 설치된 경우 모든 Outlook 버전에서 작동하는 RedemptionRDOStore .GetDefaultFolder (olFolderInbox) 방법을 사용할 수 있습니다.