2014-09-23 3 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); 

,하지만 그럴 수 없어 정크 (또는 스팸) 폴더의 속성 태그를 찾으십시오. 어떤 몸이라도 존재한다면 그것이 무엇인지 아는가?

고마워요

답변

0

왜 네임 스페이스/Store.GetDefaultFolder (olFolderJunk)를 사용? 물론 대리자 사서함의 정크 메일 폴더를 열려고하지 않는 한 (Outlook 2010 이상의 Store.GetDefaultFolder를 사용할 수 있습니다).

MAPI 수준에서 항목 ID는 PR_ADDITIONAL_REN_ENTRYIDS (0x36D81102) 다중 값 이진 속성에 저장됩니다. 인덱스는 4 (0 기준)로 저장됩니다. OutlookSpy에서 볼 수 있습니다 (받은 편지함 폴더가 선택되면 IMAPIFolder 버튼을 클릭하십시오). 아웃룩 2007 (당신이 Store.GetDefaultFolder을 사용할 수 있도록) 스토어 오브젝트를 노출하지 않기 때문에

, 당신은 Redemption (모든 버전의 Outlook)을 사용할 수 있습니다 - 그것은 모든 버전의 Outlook에 RDOStore .GetDefaultFolder 방법을 제공합니다.

+0

답장을 보내 주셔서 감사합니다. 예, Store.GetDefaultFolder()는 작동하지만 Outlook 2010 이상에서는 말한대로 작동합니다. 'PR_ADDITIONAL_REN_ENTRYIDS'을 시도했지만'TypeAttribute'를 호출 할 때'propertyAccesor.BinaryToString (propertyAccesor.GetProperty (propertyName))'을 실행할 때 실패합니다. 변환을 위해 이진 값을 제공해야합니다. ' 사실,'propertyAccesor.GetProperty (propertyName)'에 의해 반환되는 객체는 다른 폴더 들과는 다른 배열 크기를 포함합니다. –

+0

알았습니다! 당신이 그것을 배열의 네 번째 인덱스에 저장했기 때문에'defaultFolderEntryID = propertyAccesor.BinaryToString (entry);를'defaultFolderEntryID = propertyAccesor.BinaryToString (entry [4]);로 변경하면 이슈가 해결되고 Junk 폴더는 검색 됨. 감사. –