应用Outlook规则后,获取MailItem的目标MAPI文件夹和EntryID

时间:2011-07-01 06:57:47

标签: c# outlook-2007

我正在为Outlook 2007创建一个加载项,该加载项处理NewMailEx事件并提供StoreID文件夹的MAPIEntryID收到的电子邮件应用了所有Outlook规则后,该文件夹。加载项将使用GetItemFromId() System.NameSpace class方法跟踪电子邮件。我尝试使用mailitem的唯一PR_SEARCH_KEY进行搜索,但是花费了太多时间不必要地扫描所有文件夹和子文件夹。我需要一种方法来记住电子邮件,而不是再次搜索。

1 个答案:

答案 0 :(得分:0)

处理NewMailEx时,您将获得包含逗号分隔字符串的EntryIDCollection。这些看起来像GUIDS。您需要将该字符串保存在某处(或者只是您要保存的ID),然后您可以使用

获取该项目
Outlook.MailItem mi = thisAddIn.Application.Session.GetItemFromID(id, Type.Missing) as Outlook.MailItem

其中ID是您想要的项目的单个ID。您必须为收藏中的每个项目调用一次。在应用规则之后,它在最终的位置并不重要。 ID将始终相同。

@rotard要获取联系人文件夹,只需使用

public string GetFolderFullName(Outlook.ContactItem ci) 
{
     Outlook.MAPIFolder mf = ci.Parent;
     string path = mf.FolderPath;
     return path;
 }