用于在Outlook 2007中获取垃圾邮件文件夹的MAPI属性

用于在Outlook 2007中获取垃圾邮件文件夹的MAPI属性,outlook,outlook-addin,outlook-2007,mapi,Outlook,Outlook Addin,Outlook 2007,Mapi,我有一个从Outlook应用商店获取特定文件夹的例程: // Property Tag of SentFolder string propertyName = "http://schemas.microsoft.com/mapi/proptag/0x35E40102"; Outlook.Folders folders = store.GetRootFolder().Folders; object entry = propertyAccesor.GetProperty(propertyName)

我有一个从Outlook应用商店获取特定文件夹的例程:

// 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);
我有“已发送邮件”、“发件箱”和“已删除邮件”的属性标记,但找不到“垃圾邮件”文件夹的属性标记。任何一个实体都知道它存在的价值是什么


谢谢。-

为什么不使用Namespace/Store.GetDefaultFolder(olFolderJunk)?当然,除非您试图打开代理邮箱的垃圾邮件文件夹(您可以在Outlook 2010或更高版本中使用Store.GetDefaultFolder)

在MAPI级别,条目id存储在PR_ADDITIONAL_REN_entryId(0x36D81102)多值二进制属性中;它以索引4(基于0)存储。您可以在中看到它(选中“收件箱”文件夹后,单击“文件夹”按钮)


由于Outlook 2007不公开Store对象(以便您可以使用Store.GetDefaultFolder),因此您可以使用(任何版本的Outlook)-它在所有版本的Outlook中公开.GetDefaultFolder方法。

谢谢您的回答。是的,
Store.GetDefaultFolder()
可以工作,但如您所说,Outlook 2010和更新版本除外。我尝试了
PR\u额外的\u REN\u entryId
,但在执行
propertyaccessor.BinaryToString(propertyaccessor.GetProperty(propertyName))
时失败,说
类型不匹配。必须为转换提供二进制值
。事实上,
propertyaccessor.GetProperty(propertyName)
返回的对象包含与其他文件夹不同的数组大小。明白了!正如您所说,它存储在数组的第四个索引中,因此更改
defaultFolderEntryID=propertyaccessor.BinaryToString(条目)
to
defaultFolderEntryID=propertyaccessor.BinaryToString(条目[4])解决了问题,并检索了垃圾邮件文件夹。谢谢