Поиск плагинов для Outlook с RegEx - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь создать плагин для Outlook 2013, который может искать почту с помощью выражения Regex, но у меня возникли некоторые проблемы.

Я использую следующее для получения элементов входящих сообщений.

Outlook.MAPIFolder inbox = this.Application.ActiveExplorer().Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
Outlook.Items items = inbox.Items;

Затем я зацикливаю элементы и проверяю тело на соответствие регулярному выражению

Match match = rgx.Match(mail.Body);
if (match.Success)
{ //do something     }

У меня 2 проблемы с решением

  • Я получаю только элементы, которыедо 1 годаКак получить все письма независимо от возраста?
  • Есть ли более быстрый способ поиска с использованием RegEx?

Я надеюсь, что кто-то может помочь

1 Ответ

0 голосов
/ 30 мая 2018

Похоже, вы настроили кэшированную учетную запись Exchange в Outlook с данными за 1 год.Вы должны проверить это в настройках профиля.В качестве возможного обходного пути вы можете использовать EWS или Extended MAPI для обхода кэшированных данных.

Затем я зацикливаю элементы и проверяю тело на соответствие регулярному выражению

Перебор всех элементов в папке - не очень хорошая идея.Я бы порекомендовал использовать методы Find / FindNext или Restrict класса Items, чтобы получить подмножество элементов, соответствующих вашим условиям.

Также может оказаться полезным метод AdvancedSearch класса Application.Основные преимущества использования метода AdvancedSearch в Outlook:

  • Поиск выполняется в другой теме.Вам не нужно запускать другой поток вручную, так как метод AdvancedSearch запускает его автоматически в фоновом режиме.
  • Возможность поиска любых типов элементов: почта, встреча, календарь, заметки и т. Д. В любом месте,т.е. выходит за рамки определенной папки.Методы Restrict и Find / FindNext могут быть применены к определенной коллекции Items (см. Свойство Items класса Folder в Outlook).
  • Полная поддержка запросов DASL (пользовательские свойства могут использоваться дляпоиск тоже).Подробнее об этом можно прочитать в статье Filtering в MSDN.Для повышения эффективности поиска можно использовать ключевые слова мгновенного поиска, если для магазина включен мгновенный поиск (см. Свойство IsInstantSearchEnabled класса Store).
  • Вы можете остановить процесс поиска в любой момент.используя метод Stop класса Search.

Подробнее об этом читайте в расширенном поиске в Outlook программно: C #, статья VB.NET .

...