2017-02-02 7 views
1

У меня есть код VBA на основе Outlook, который читает все входящие письма.
Этот код использует MailItem для просмотра каждой почты, просматривающей отправителя, также и темы и для вложений.
В основе кода используется функция urn:schemas, которая выполняет запрос sql в папке «Входящие».
Таким образом, если новая почта приходит, процесс, который запускает, смотрит на весь почтовый ящик каждый раз, а не только на эту почту. (Входящие сохраняются в порядке и элементы перемещаются при обработке).Outlook VBA Mail Listener - не видя тему mailitem

Сердце запроса выглядит следующим образом:

Dim Filter as String 
Filter = "urn:schemas:mailheader:subject like '%That report - %'" 

Dim iMailMatch As Object 
Set iMailMatch = Inbox.items.Find(Filter) 

Проблема у меня в том, что (иногда), когда машина заблокирована (не вошли), макрос будет срабатывать на новую почту но он не найдет ничего, даже если есть письма, которые соответствуют.
Когда я разблокирую терминал, и придет новая почта - процесс срабатывает, и он автоматически поднимает/обрабатывает почту, чего ранее не видел.

Проблема очевидна только тогда, когда терминал заблокирован. Таким образом, я могу только думать, что это связано с привилегиями доверия.
Есть время, которое успешно срабатывает, когда терминал заблокирован, но похоже, что только когда почта прибывает вскоре после того, как терминал заблокирован.

+0

Что вы используете 'NewMailEx или ItemsAdd event'? – 0m3r

ответ

0

Не искать. Событие NewMailEx передает идентификатор записи нового элемента в обработчик событий - откройте элемент, используя Namespace.GetItemFromID, затем прочитайте свойство MailItem.Subject.