Я не знаю, можно ли использовать регулярное выражение непосредственно в правиле, но у вас может быть правило, запускающее сценарий, и сценарий может использовать регулярные выражения.Я ненавижу Outlook.
Во-первых, вам нужно открыть редактор сценариев через Инструменты - Макрос - Открыть редактор Visual Basic (это сочетание клавиш Alt-F11).
Редактор откроется.Он должен содержать схему проекта на небольшой панели в верхнем левом углу.Проект будет указан как VBAProject.OTM.Разверните этот элемент, чтобы открыть объекты Microsoft Office Outlook.Разверните это, чтобы показать ThisOutlookSession.Дважды щелкните ThisOutlookSession, чтобы открыть панель редактирования кода (которая, вероятно, будет пустой).
Далее выберите Меню инструментов |Ссылки и включение ссылок RegExp, называемых чем-то вроде «Регулярные выражения Microsoft VBScript 5.5»
Теперь вы можете создать подпрограмму для выполнения действия фильтрации.Обратите внимание, что подпрограмма, вызываемая правилом, должна иметь один параметр типа Outlook.MailItem.Например:
' note that Stack Overflow's syntax highlighting doesn't understand VBScript's
' comment character (the single quote) - it treats it as a string delimiter. To
' make the code appear correctly, each comment must be closed with another single
' quote so that the syntax highlighter will stop coloring everything as a string.'
Public Enum Actions
ACT_DELIVER = 0
ACT_DELETE = 1
ACT_QUARANTINE = 2
End Enum
Sub MyNiftyFilter(Item As Outlook.MailItem)
Dim Matches, Match
Dim RegEx As New RegExp
RegEx.IgnoreCase = True
' assume mail is good'
Dim Message As String: Message = ""
Dim Action As Actions: Action = ACT_DELIVER
' SPAM TEST: Illegal word in subject'
RegEx.Pattern = "(v\|agra|erection|penis|boner|pharmacy|painkiller|vicodin|valium|adderol|sex med|pills|pilules|viagra|cialis|levitra|rolex|diploma)"
If Action = ACT_DELIVER Then
If RegEx.Test(Item.Subject) Then
Action = ACT_QUARANTINE
Set Matches = RegEx.Execute(Item.Subject)
Message = "SPAM: Subject contains restricted word(s): " & JoinMatches(Matches, ",")
End If
End If
' other tests'
Select Case Action
Case Actions.ACT_QUARANTINE
Dim ns As Outlook.NameSpace
Set ns = Application.GetNamespace("MAPI")
Dim junk As Outlook.Folder
Set junk = ns.GetDefaultFolder(olFolderJunk)
Item.Subject = "SPAM: " & Item.Subject
If Item.BodyFormat = olFormatHTML Then
Item.HTMLBody = "<h2>" & Message & "</h2>" & Item.HTMLBody
Else
Item.Body = Message & vbCrLf & vbCrLf & Item.Body
End If
Item.Save
Item.Move junk
Case Actions.ACT_DELETE
' similar to above, but grab Deleted Items folder as destination of move'
Case Actions.ACT_DELIVER
' do nothing'
End Select
End Sub
Private Function JoinMatches(Matches, Delimeter)
Dim RVal: RVal = ""
For Each Match In Matches
If Len(RVal) <> 0 Then
RVal = RVal & ", " & Match.Value
Else
RVal = RVal & Match.Value
End If
Next
JoinMatches = RVal
End Function
Далее необходимо создать правило (Инструменты - Правила и предупреждения) для запуска этого сценария.Нажмите кнопку «Создать правило» в диалоговом окне, чтобы запустить мастер.Выберите шаблон для правила.Выберите шаблон «Проверять сообщения при получении» в категории «Начать с пустого правила».Нажмите Далее.
Выберите условие «Только на этом компьютере» (интуитивно понятно, не правда ли?) И нажмите «Далее».
Выберите параметр «Запустить сценарий».В нижней части мастера, где он отображает ваше новое правило, он должен читать:
Apply this rule after the message arrives
on this machine only
run a script
Фраза "скрипт" - это ссылка, которую можно нажимать.Нажмите на нее, и в Outlook отобразится диалоговое окно, в котором должен быть указан список подпрограмм, созданных ранее.Выберите подпрограмму и нажмите кнопку ОК.
Вы можете нажать Далее, чтобы добавить исключения к правилу, или нажать Готово, если у вас нет исключений.
Теперь, как будто этот процесс не был достаточно запутаннымэто правило будет отключаться при каждой остановке и перезапуске Outlook, если только вы не подпишете сценарий с помощью ключа подписи кода.
Если у вас еще нет ключа подписи кода, вы можете создать его с OpenSSL .
Я уже говорил, что ненавижу Outlook?