Consegui incorporar uma guia à string de pesquisa pressionando Control + i ao digitá-la, mas essa mensagem não correspondia ao meu servidor de e-mail. Quando examinei os caracteres reais no corpo da mensagem da mensagem recebida, descobri que o caractere {TAB} tinha sido traduzido em seis caracteres \ u00A0 (unicode) seguido por um único caractere de espaço. Isso impediu que a string de pesquisa fosse correspondida. Você pode tentar este método primeiro para ver se ele funciona com seus e-mails.
Como uma solução alternativa, você pode criar uma regra "personalizada" adicionando uma macro do Visual Basic for Applications ao Outlook.
- Primeiro, ative o menu do desenvolvedor acessando Outlook - > Opções - > Personalizar Faixa de Opções e, em seguida, marcar a opção Desenvolvedor na lista Guias Principais à direita.
- Agora, na visualização principal do Outlook, você deve ver um menu Desenvolvedor , selecioná-lo
- Clique no botão Segurança de macros na faixa de opções e selecione "Notificação para todas as macros" ou "Ativar todas as macros (não recomendado; código potencialmente perigoso pode ser executado)
- Em seguida, clique no botão Visual Basic na faixa de opções para abrir o editor do Visual Basic
- Vá para as Ferramentas - > Referências e adicionar uma referência à biblioteca do Microsoft VBScript Regular Expression 5.5
- No editor do Visual Basic, selecione ThisOutlookSession e cole o código listado abaixo.
- Salve seu projeto e saia do Outlook
- Reabra o Outlook e envie uma mensagem de teste
Você precisará editar o conteúdo da string RouteToFolderName e as constantes RouteToFolderRegEx para corresponder às suas preferências de pesquisa.
A macro é salva em um arquivo chamado VBAProject.OTM localizado na área de configurações do usuário (pasta C: \ Users \\ AppData \ Roaming \ Microsoft \ Outlook \ no Windows 7). Você pode querer fazer uma cópia de backup deste arquivo depois de ter obtido a macro funcionando de acordo com suas especificações.
Option Explicit
Private WithEvents olInboxItems As Items
' This is the name of the folder you want your messages moved to Private Const RouteToFolderName As String = "FollowUp"
' This is the regular expression that matches the text you are ' searching for. Outlook replaced a single {TAB} character with ' 6 x \u00A0 characters and 1 x space character. Private Const RouteToFolderRegex As String = "Changed By:\u00A0+\s+Me"
Private Sub Application_Startup() Dim objNS As NameSpace Set objNS = Application.Session ' Attach the the Outlook inbox to receive an event whenever an item arrives Set olInboxItems = objNS.GetDefaultFolder(olFolderInbox).Items Set objNS = Nothing End Sub
Private Sub olInboxItems_ItemAdd(ByVal Item As Object) Dim objNS As NameSpace Dim objMailItem As Outlook.MailItem Dim objMailFolderId As String Dim regex As RegExp Dim Found As Boolean
' Check to make sure we have a mail message first If (TypeOf Item Is Outlook.MailItem) Then ' Locate the id of the folder we want to store the message in objMailFolderId = FindFolderByName(Application.Session.folders, Found,
RouteToFolderName)
Set objMailItem = Item Set regex = New RegExp regex.IgnoreCase = True ' Do a case insensitive search regex.Global = True regex.Pattern = RouteToFolderRegex ' Test the message body against the regular expression If (regex.Test(objMailItem.Body)) Then ' Message body matched so move to our folder objMailItem.Move Application.Session.GetFolderFromID(objMailFolderId) End If End If End Sub
' Recursively search from the root folder for the folder that matches "folderName" (case insensitive) Public Function FindFolderByName(ByRef folders As Outlook.folders, ByRef Found As Boolean, ByVal folderName As String) As String Dim objFolder As Outlook.Folder
For Each objFolder In folders If Found = True Then Exit Function End If If LCase(objFolder.Name) = LCase(folderName) Then FindFolderByName = objFolder.EntryID Found = True Exit Function Else If objFolder.folders.Count > 0 Then FindFolderByName = FindFolderByName(objFolder.folders, Found, folderName) End If End If Next End Function