Получение информации из сообщения с помощью правила Outlook

Я использую Outlook 2016 с двумя учетными записями электронной почты, и я установил правило для вызова сценария VBA, чтобы выполнять некоторые действия с входящими сообщениями на одной из учетных записей. Есть ли способ с помощью VBA получить доступ к объекту электронной почты, который активировал правило, которое я использую?

Мне нужно просто получить адрес электронной почты отправителя каждого сообщения.

PS: я использую POP3, а не Exchange. Кроме того, я пробовал Application_NewMail() вместо правила, но это не сработало.


person Zeferino    schedule 28.05.2018    source источник
comment
Возможный дубликат Идентифицируйте элемент, который вызвал запуск скрипта код в правиле   -  person niton    schedule 28.05.2018


Ответы (1)


Подпрограмма макроса VBA должна выглядеть следующим образом, когда вы назначаете ее правилу:

Public Sub Test(mail as MailItem)
   ' where mail is the object which triggered the rule
   MsgBox mail.SenderEmailAddress
End Sub

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

Кроме того, в качестве возможного обходного пути к правилам Outlook вы можете рассмотреть возможность обработки NewMailEx класса Application, которое запускается при получении нового элемента в папке "Входящие".

Это событие запускается один раз для каждого полученного элемента, который обрабатывается Microsoft Outlook. Элемент может быть одним из нескольких различных типов элементов, например, MailItem , MeetingItem или SharingItem . Строка EntryIDsCollection содержит идентификатор записи, соответствующий этому элементу. Обратите внимание, что это поведение изменилось по сравнению с более ранними версиями события, когда EntryIDCollection содержал список разделенных запятыми идентификаторов записей всех элементов, полученных в папке «Входящие» с момента последнего запуска события.

Событие NewMailEx возникает при поступлении нового сообщения в папку "Входящие" и до обработки правила клиента. Вы можете использовать идентификатор записи, возвращенный в массиве EntryIDCollection, для вызова метода NameSpace.GetItemFromID и обработки элемента. Используйте этот метод с осторожностью, чтобы свести к минимуму влияние на производительность Outlook. Однако, в зависимости от настроек на клиентском компьютере, после поступления нового сообщения в папку «Входящие» такие процессы, как фильтрация нежелательной почты и правила клиента, которые перемещают новое сообщение из папки «Входящие» в другую папку, могут выполняться асинхронно. Вы не должны предполагать, что после срабатывания этих событий вы всегда будете получать увеличение количества элементов в папке «Входящие» на один элемент.

person Eugene Astafiev    schedule 28.05.2018