При назначении правила правилу подпрограмма макроса 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.Однако, в зависимости от настроек на клиентском компьютере, после поступления нового сообщения в папку «Входящие» такие процессы, как фильтрация нежелательной почты и правила клиента, которые перемещают новое сообщение из папки «Входящие» в другую папку, могут происходить асинхронно.Не следует полагать, что после возникновения этих событий вы всегда получите увеличение количества элементов в папке «Входящие» на один элемент.