MAPI属性以获取Outlook 2007中的收件箱文件夹

时间:2014-10-08 12:33:15

标签: c# outlook outlook-2007

我有这个例程从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);

我有收件箱中所有文件夹的属性标签,Anybody知道收件箱文件夹的属性标签是什么?或任何其他方式获取收件箱文件夹而不使用单词"收件箱"。

目前我使用此例程来获取收件箱文件夹,但它依赖于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;
}

如果Outlook使用的语言不是英语,则此例程不起作用。

1 个答案:

答案 0 :(得分:0)

首先,收件箱没有这样的标签 - 可以有多个收件箱。例如。常规邮件(IPM.*)转到收件箱文件夹,但IPC.*邮件会转到商店的根文件夹(对最终用户不可见)。

在扩展MAPI级别(C ++或Delphi)上,您需要调用IMsgStore :: GetReceiveFolder或使用从IMsgStore :: GetReceiveFolderTable返回的MAPI表。您可以在OutlookSpy中使用这些内容(单击IMsgStore按钮)。

如果您使用的是Outlook 2010或更高版本,则可以使用Store。GetDefaultFolder(olFolderInbox)方法。

如果您遇到Outlook 2007,可以使用Redemption及其RDOStore。GetDefaultFolder(olFolderInbox)方法(适用于所有版本的Outlook)。