Outlook из MS Office 2007 поддерживает запуск VB скриптов для обработки сообщений. Возможность обрабатывать сообщения с помощью VisualBasic в Офис встроена давно — еще с версии Office 2000. В данной статье будет продемострировано использование скриптов VBA в Outlook для извлечения из сообщения нужных данных и отправки уведомления на мобильный телефон.
Нам нужен редактор Visual Basic for Applications, встроенный в Outlook.
Содержание
Запускаем редактор VBA в Outlook
Нажмите Alt-F11, чтобы вызвать его. Другой вариант — вывести на ленту раздел «Разработчик»
Появится окно редактора Visual Basic for Applications — VBA:
Создаем Outlook VBA скрипт
VBA не предназначен для создания программ, которые можно перенести и развернуть на другом компьютере. Конечно, вы сможете перенести код скрипта на другую машину, но основная функция VB для приложений — автоматизация действий пользователя. Предполагается, что автоматизировать свои действия пользователь будет сам :)
В редакторе скрипт можно добавить в новый модуль, а можно в объект ThisOutlookSession. Это скажется только на имени модуля, на который вы затем будете ссылаться, создавая правило.
Вставьте в редактор простой код, чтобы проверить работу скрипта:
Sub CustomMailMessageRule(Item As Outlook.MailItem) MsgBox "Mail message arrived: " & Item.Subject End Sub
Должно получиться так:
Данный код выведет всплывающее окно с темой полученного сообщения
Добавляем правило для запуска Outlook VBA скрипта
Правило создается как обычно.
Выберите, на какое событие будет вызываться скрипт. В данном примере скрипт будет срабатывать на все сообщения, которые адресованы на наш адрес.
Затем выберите действие «Run a script» и выберите скрипт добавленный в VBA редактор:
Отправьте себе сообщение. Если при его получении Outlook вы увидели окошко с надписью
Mail message arrived:
и темой письма, все в порядке.
Если VBA скрипт не работает
В моем случае скрипт прекрасно запустился, а затем перестал работать. Если у вас срабатывает правило, но прописанные в скрипте действия не выполняются, возможная причина — настройки безопасности Outlook.
В Outlook 2007 выберите меню Tools | Trust Center и установите macro security в Warn on all macros.
Обработка сообщения и формирование уведомления
Теперь предположим, что мы хотим получать уведомление о пришедших сообщениях на мобильный телефон. Для пересылки почты в SMS многие провайдеры предоставляют свой сервис, также можно использовать специализированные сервисы.
Но если мы будем просто пересылать email стандартным правилом Outlook, то в SMS могут не попасть нужные нам данные, либо оно может и вовсе не дойти.
Оптимальным вариантом будет сформировать новое сообщение, включив туда только необходимые нам из исходного письма данные, и отправить его.
Для этого можете использовать следующий скрипт
Private Const FORWARD_TO_EMAIL As String = "your_email@your_domain.com " Sub ForwardEmail(MyMail As MailItem) On Error Goto EndSub Dim strBody As String Dim objMail As Outlook.MailItem Dim MailItem As Outlook.MailItem Set objMail = Application.Session.GetItemFromID(MyMail.EntryID) ' Исходное сообщения Set MailItem = Application.CreateItem(olMailItem) MailItem.Subject = objMail.Subject ' Готовим и отсылаем уведомление strBody ="From: " + objMail.SenderEmailAddress + Chr$(13) + _ "To: " + objMail.To + Chr$(13) + _ "CC: " + objMail.CC + Chr$(13) MailItem.Recipients.Add (FORWARD_TO_EMAIL) ' Не хранить отправленные уведомления MailItem.DeleteAfterSubmit = True ' Отправка сообщения MailItem.body = strBody MailItem.Send ' Set variables to null to prevent memory leaks Set MailItem = Nothing Set Recipient = Nothing Set objMail = Nothing Exit Sub EndSub: End Sub
Данный скрипт сформирует и отправит сообщение, в котором будут тема сообщения, а также поля From, To, CC.