Подпрограмма макроса 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