Outlook VBA

Outlook из MS Office 2007 поддерживает запуск VB скриптов для обработки сообщений. Возможность обрабатывать сообщения с помощью VisualBasic в Офис встроена давно — еще с версии Office 2000.  В данной статье будет продемострировано использование скриптов VBA в Outlook для извлечения из сообщения нужных данных и отправки уведомления на мобильный телефон. 

Нам нужен редактор Visual Basic for Applications, встроенный в Outlook.

 

Запускаем редактор VBA в Outlook

Нажмите Alt-F11, чтобы вызвать его. Другой вариант — вывести на ленту раздел «Разработчик»

Панель Разработчик для Outlook VBA

Появится окно редактора Visual Basic for Applications — VBA: Outlook VBA

Создаем Outlook VBA скрипт

VBA не предназначен для создания программ, которые можно перенести и развернуть на другом компьютере. Конечно, вы сможете перенести код скрипта на другую машину, но основная функция VB для приложений — автоматизация действий пользователя. Предполагается, что автоматизировать свои действия пользователь будет сам :)

В редакторе скрипт можно добавить в новый модуль, а можно в объект ThisOutlookSession. Это скажется только на имени модуля, на который вы затем будете ссылаться, создавая правило.

Вставьте в редактор простой код, чтобы проверить работу скрипта:

Sub CustomMailMessageRule(Item As Outlook.MailItem)
   MsgBox "Mail message arrived: " & Item.Subject
End Sub

Должно получиться так:

Outlook VBA скрипт

Данный код выведет всплывающее окно с темой полученного сообщения

Добавляем правило для запуска Outlook VBA скрипта

Правило создается как обычно.

Выберите, на какое событие будет вызываться скрипт. В данном примере скрипт будет срабатывать на все сообщения, которые адресованы на наш адрес.

Outlook VBA создаем правило

Затем выберите действие «Run a script» и выберите скрипт добавленный в VBA редактор:

Outlook 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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *