Получите целевую папку MAPI и EntryID для MailItem после применения правил Outlook - PullRequest
0 голосов
/ 01 июля 2011

Я создаю надстройку для Outlook 2007, которая обрабатывает событие NewMailEx и дает StoreID папки MAPI и EntryID входящей электронной почты в этой папке после всех правил Outlook применяются к нему. Надстройка будет отслеживать электронную почту позже, используя GetItemFromId() метод System.NameSpace class. Я попытался выполнить поиск по уникальному PR_SEARCH_KEY почтовому элементу, но он занимал слишком много времени без необходимости сканировать все папки и подпапки. Мне нужен способ запомнить электронную почту и не искать ее снова.

1 Ответ

0 голосов
/ 08 сентября 2011

При обработке NewMailEx вы получаете EntryIDCollection, содержащий разделенную запятыми строку.Они похожи на GUIDS.Вам нужно сохранить эту строку где-нибудь (или просто идентификатор, который вы хотите сохранить), а затем вы можете получить элемент (ы), используя

Outlook.MailItem mi = thisAddIn.Application.Session.GetItemFromID(id, Type.Missing) as Outlook.MailItem

Где ID - это единственный идентификатор для элемента, который вы хотите.Вам придется вызывать это один раз для каждого элемента в вашей коллекции.Неважно, где это заканчивается после применения правил.идентификатор всегда будет одинаковым.

@ rotard Чтобы получить папку контактов, просто используйте

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