Outlook 2010 - 4

Привязка oMsg к текущему инспектору

Устанавливая ссылки MailItem в событии Inspectors_NewInspector, мы указываем, что обрабатываются только новые сообщения. Открытие ранее принятого почтового сообщения не приведет к возникновению события Inspectors_NewInspector. Inspector, переданный подпрограмме, имеет свойство CurrentItem, которое относится к элементу, просматриваемому пользователем.

Проверив свойство Class этого элемента, можно определить, действительно ли это почтовый элемент. Для такой цели можно воспользоваться константой с именем olMail. Также необходимо проверить уникальную строку идентификатора, которую поставщик хранилища Messaging API (MAPI) назначает при создании элемента в хранилище. Поэтому свойство EntryID назначается элементу Outlook только после того, как элемент сохранен или отправлен. Эта проверка, выполняемая фрагментом кода с меткой А в листинге 1, отличает новые элементы электронной почты от существующих. Назначение почтового элемента таким способом приводит к возникновению его событий, в том числе события Send.

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

Событие oMsg_Send в действии

Я направил часть вывода в область проверки Immediate (она показана в нижней панели Visual Basic Editor на экране 6), чтобы протестировать процесс. Щелкните View на панели меню, а затем Immediate Window («Область проверки»), если она невидима. На экране 8 показаны типичные результаты в случае, если сообщение адресовано только проверяемому узлу. Это сообщение адресовано трем получателям: одному в поле To («Кому»), одному в поле CC («Копия») и одному в поле BCC («Скрытая»). Все три получателя содержались в коллекции получателей почтового элемента. Адрес BCC —RobGravelleAndCo. com, как показано на экране 9. Последним тестом был ответ на это сообщение с удаленным получателем RobGravelleAndCo.com. Как и ожидалось, правило не переместило отправленный элемент, как показано на экране 10.

Альтернативное решение: использование события Items_ ItemAdd папки Sent Items

Решение oMsg_Send —удачный выбор, если новые сообщения уже обрабатываются и необходимо ссылаться на Inspector нового элемента. Альтернативное решение помещает код в событие Items_ItemAdd () папки Sent Items. Исходный текст ThisOutlookSession для данного решения показан в листинге 2.

Размещение основной логики в событии Items_ItemAdd () дает два преимущества. Во-первых, уменьшается размер исходного текста. Во-вторых, это очень эффективный способ. Все отправленные элементы оказываются в папке Sent Items, если только не созданы обходные правила или не снят флажок Save copies of messages in Sent Items («Сохранять копии сообщений в папке «Отправленные»») в окне E-mail Options («Параметры почты»). Обратите внимание, что оба решения применяются к одной учетной записи почтового ящика. Поэтому, если нужно сходным образом обработать несколько почтовых ящиков, следует присоединить обрабатывающий код к каждому событию папки SentItems, как показано в листинге 3.

Получение доступа к событию Items_ItemAdd () папки Sent Items

Событие ItemAdd () является членом объекта коллекции Items, поэтому необходимо использовать ключевое слово WithEvents в верхней части модуля ThisOutlookSession для объявления объекта типа Items: Public WithEvents olSentItems As Items Здесь же находится информация бизнес-папки. Если ожидается большой объем электронной почты, связанный с определенным направлением деятельности, то полезно создать глобальную ссылку на эту папку, как показано во фрагменте с меткой А в листинге 2. Как и ранее, ссылки на объект назначаются в событии Application_StartUp (). Как показано во фрагменте с меткой В листинга 2, ссылка на бизнес-папку дана в связи с папкой Sent Items (то есть на одном уровне с папкой «Входящие».)

Популярные шаблоны