Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   VisualBasic скрипт для сортировки писем в Outlook (http://forum.oszone.net/showthread.php?t=328563)

DJ@XON 24-07-2017 15:10 2753646

VisualBasic скрипт для сортировки писем в Outlook
 
Уважаемые пользователи форума!
Помогите написать VBA скрипт для Outlook, который анализирует входящие письма и перемещает их в определенную папку по нахождению двух словосочетаний в тексте письма:
if ("текст 1" есть в письме) and ("текст 2" есть в письме) to {перемещаем письмо в "папку"} // не пугайтесь, это просто словесный алгоритм, чтобы было яснее, что мне требуется.

Почему я не использую стандартные правила Outlook?
Потому что эти правила не срабатывают. Дело в том, что один из параметров "текст 1" - это обязательно гиперссылка. И в паре с другим, обычным текстом, стандартное правило почему то не хочет срабатывать.

В программировании на VisualBasic не силен (а если быть точнее, то совсем никак), поэтому прошу помощи у вас.
Нашел, тестовый скрипт в сети, который выводит на экран тему входящего сообщения, вставил в ThisOutlookSession, вроде работает:
Код:

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

дальше никак. В сети ничего дельного не могу найти.

Подскажите пожалуйста или дайте ссылки на нужные материалы, примеры для самостоятельного изучения.
Буду очень благодарен! Заранее спасибо!

nexochyka 04-08-2017 00:13 2756176

HTML код:

https://msdn.microsoft.com/VBA/Outlook-VBA/articles/mailitem-move-method-outlook
Это пример кода с перебором непрочитанных писем
ps есть нюанс если непрочитанных больше 150 оутглюк прервет обработку.

Код:


Private Sub Application_NewMail()
'Мониторим папку входящие, и обрабатываем непрочитанные письма

Dim objMItem As MailItem
Dim objItem As Object
Dim objMAPIFolder As Outlook.MAPIFolder
Set objMAPIFolder = Outlook.Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox) 'Папка: Входящие

On Error Resume Next

' ==================
'Проверка на критерии [Непрочтитанное]
For Each objItem In objMAPIFolder.Items.Restrict("[Unread]=TRUE") 'objMItem вместо objItem

'Проверка письма на соответствие критериям
With objItem

    ' ===============
    'Обработка темы письма по критериям
    Select Case .Subject
    ' В вашем случае это Select Case .Body
' -------------------------------------------------------------------------------------------------------
        Case "Пример 1"
            .Move (Ваша папка)
' -------------------------------------------------------------------------------------------------------
        Case "Пример 2"
            .UnRead = False 'пометить прочтенным
            .Delete              'перемесить в папку удаленные
' -------------------------------------------------------------------------------------------------------
        Case Else
            ' Здесь можно вставить дополнительные обработки
' -------------------------------------------------------------------------------------------------------

    End Select
End With

Next
' ==============
Set objMAPIFolder = Nothing
End Sub

это урезанный фрагмент рабочего кода, возможны небольшие ошибки


Время: 21:04.

Время: 21:04.
© OSzone.net 2001-