Você quer uma regra do Outlook que seja aplicada a todas as mensagens recebidas, exceto aquelas que contêm um campo de cabeçalho específico, como X-Category ou X-Priority. O Assistente de Regras do Outlook não oferece uma condição nativa para campos de cabeçalho personalizados. Este artigo explica como usar uma combinação de uma regra executar script e uma macro VBA curta para excluir mensagens que contenham um valor de cabeçalho específico. Você aprenderá as etapas exatas para escrever a macro, anexá-la a uma regra e testar a exclusão.
Principais Pontos: Excluir E-mails por Cabeçalho Personalizado no Outlook
- Guia Desenvolvedor > Visual Basic > Inserir > Módulo: Crie uma função VBA que verifica um campo de cabeçalho específico e retorna True se o cabeçalho estiver ausente.
- Assistente de Regras > Executar script > Selecione sua macro: Anexe a macro a uma regra para que ela processe apenas mensagens sem o cabeçalho alvo.
- Arquivo > Opções > Central de Confiabilidade > Configurações de Macro > Habilitar todas as macros: Necessário antes que a regra possa executar o código VBA.
Como as Regras do Outlook Lidam com Cabeçalhos Personalizados
As condições de regra internas do Outlook cobrem remetente, destinatário, assunto, corpo e um conjunto de campos de cabeçalho predefinidos, como Importância ou Sensibilidade. O Assistente de Regras não inclui uma condição para campos de cabeçalho arbitrários como X-Mailer, X-List ou cabeçalhos X personalizados adicionados por um sistema de e-mail. Para contornar essa limitação, você deve usar a ação Executar script, que chama uma função VBA que inspeciona o objeto MailItem.PropertyAccessor. A macro pode ler qualquer propriedade MAPI ou cabeçalho de transporte. Ao escrever uma função que retorna True apenas quando o cabeçalho está ausente, a regra efetivamente exclui mensagens que contêm o cabeçalho. A macro não modifica a mensagem; ela apenas controla se a regra continua com suas ações restantes.
Pré-requisitos para Usar a Ação Executar Script
Antes de criar a regra, confirme os seguintes itens.
- Cliente desktop do Outlook para Windows. A ação Executar script não está disponível no Outlook na web ou no Outlook para Mac.
- Segurança de macro configurada para permitir macros assinadas ou todas as macros. Você habilitará isso na Central de Confiabilidade.
- O nome exato do cabeçalho que você deseja excluir. Os nomes de cabeçalho não diferenciam maiúsculas de minúsculas, mas devem ser escritos exatamente como aparecem na fonte da mensagem, por exemplo X-Custom-Header.
- Um e-mail de teste que contenha o cabeçalho para que você possa verificar se a exclusão funciona.
Etapas para Criar a Macro VBA que Verifica um Cabeçalho
- Abra o editor VBA
No Outlook, pressione Alt+F11. Isso abre a janela do Microsoft Visual Basic for Applications. - Insira um novo módulo
No painel Projeto à esquerda, expanda Project1 e clique com o botão direito em Módulos. Selecione Inserir > Módulo. Uma janela de código em branco aparece. - Cole a função de verificação de cabeçalho
Copie e cole o código a seguir na janela do módulo. SubstituaX-Seu-Cabeçalhopelo nome real do cabeçalho que você deseja excluir.Function ExcluirSeCabecalhoPresente(MyItem As MailItem) As Boolean Const NOME_CABECALHO As String = "X-Seu-Cabeçalho" Dim valorCabecalho As String On Error Resume Next valorCabecalho = MyItem.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/string/{00020386-0000-0000-C000-000000000046}/" & NOME_CABECALHO & "/0x0000001F") On Error GoTo 0 ' Retorna True (executa a regra) apenas se o cabeçalho estiver ausente ExcluirSeCabecalhoPresente = (valorCabecalho = "" Or IsNull(valorCabecalho)) End FunctionA função lê a propriedade MAPI nomeada que corresponde ao cabeçalho de transporte. Se o cabeçalho estiver ausente, a função retorna True, o que instrui a regra a continuar o processamento. Se o cabeçalho existir, a função retorna False e a regra para.
- Salve a macro e feche o editor
Pressione Ctrl+S para salvar. Nomeie o projeto se solicitado. Feche a janela do VBA e retorne ao Outlook.
Etapas para Habilitar Macros na Central de Confiabilidade
- Abra as configurações da Central de Confiabilidade
Vá para Arquivo > Opções > Central de Confiabilidade > Configurações da Central de Confiabilidade. - Altere as configurações de macro
Selecione Configurações de Macro. Escolha Habilitar todas as macros. Essa configuração permite que a regra execute a função VBA sem um aviso de segurança a cada vez. Clique em OK duas vezes para fechar ambas as caixas de diálogo.
Etapas para Criar a Regra que Usa a Macro
- Abra o Assistente de Regras
Vá para Arquivo > Gerenciar Regras e Alertas. Na caixa de diálogo Regras e Alertas, clique em Nova Regra. - Selecione um modelo
Em Iniciar de uma regra em branco, selecione Aplicar regra em mensagens que recebo. Clique em Avançar. - Adicione condições (opcional)
Selecione as condições que deseja aplicar a todas as mensagens, como de um remetente específico ou com palavras específicas no assunto. Essas condições são executadas antes da verificação da macro. Clique em Avançar. Se solicitado, clique em Sim para aplicar a regra a todas as mensagens. - Adicione a ação Executar script
Na lista Selecionar ação(ões), role para baixo e marque executar script. Na caixa Etapa 2, clique na palavra sublinhada script. Na caixa de diálogo Escolher um Script, selecione a função ExcluirSeCabecalhoPresente na lista. Clique em OK. - Adicione a ação principal
Ainda na lista Selecionar ação(ões), marque a ação que deseja aplicar às mensagens que passarem na verificação do cabeçalho. Por exemplo, mover para uma pasta, atribuir uma categoria ou encaminhar. Clique em Avançar. - Defina exceções (opcional)
Adicione exceções. Clique em Avançar. - Nomeie a regra e finalize
Digite um nome descritivo como “Excluir Mensagens com Cabeçalho X”. Marque Ativar esta regra. Clique em Concluir e depois em OK para fechar a caixa de diálogo Regras e Alertas.
Testando a Regra
Envie para si mesmo um e-mail que contenha o cabeçalho alvo. Para adicionar um cabeçalho em uma mensagem de teste, você pode usar uma ferramenta como Telnet ou um script, ou pedir ao administrador de e-mail para enviar um. A mensagem deve ser entregue na sua Caixa de Entrada sem que a ação da regra seja aplicada. Uma segunda mensagem sem o cabeçalho deve acionar a ação da regra. Se a regra não for executada, verifique o nível de segurança da macro e confirme se a função VBA compila sem erros abrindo o editor VBA e clicando em Depurar > Compilar VBAProject.
Se a Regra Não Excluir Mensagens Corretamente
O Outlook exibe um aviso de segurança toda vez que a regra é executada
A macro acessa o objeto PropertyAccessor, o que aciona a proteção do modelo de objeto do Outlook em algumas configurações de segurança. Para suprimir os avisos, instale o suplemento Outlook Security Manager de um fornecedor confiável ou use uma ferramenta de terceiros que registre a macro como confiável. Alternativamente, use um certificado digital para assinar o projeto VBA e habilite apenas macros assinadas na Central de Confiabilidade.
A macro retorna um erro ou não detecta o cabeçalho
Verifique se o nome do cabeçalho está correto e se é um cabeçalho de transporte visível na fonte da mensagem. Abra a mensagem de teste, pressione Ctrl+F3 para abrir a caixa de diálogo Propriedades e procure o cabeçalho na caixa Cabeçalhos da Internet. O nome do cabeçalho no código VBA deve corresponder exatamente, exceto por maiúsculas/minúsculas. Confirme também se a string de esquema na chamada GetProperty usa o GUID correto para propriedades nomeadas. O GUID no código acima é o padrão para propriedades nomeadas por string. Se o seu cabeçalho usar um namespace diferente, ajuste a string de esquema conforme necessário.
A regra é executada em todas as mensagens, independentemente do cabeçalho
A função retorna True quando o cabeçalho está ausente. Se a regra ainda processar mensagens que contêm o cabeçalho, a função pode estar retornando True incorretamente. Adicione uma mensagem de depuração no editor VBA inserindo MsgBox valorCabecalho antes da linha de retorno, envie uma mensagem de teste e observe a caixa de diálogo. Se a caixa de diálogo mostrar um valor, o cabeçalho está presente e a função deve retornar False. Corrija a lógica se necessário.
Regra Executar Script vs Condições Internas: Principais Diferenças
| Item | Regra Executar Script | Condições Internas |
|---|---|---|
| Suporte a cabeçalhos | Qualquer cabeçalho de transporte via PropertyAccessor | Apenas Importância, Sensibilidade e alguns cabeçalhos predefinidos |
| Esforço de configuração | Requer código VBA e habilitação de macro | Apontar e clicar no Assistente de Regras |
| Avisos de segurança | Possíveis com acesso ao PropertyAccessor | Sem avisos |
| Portabilidade | A macro deve estar presente em cada máquina | Regras sincronizam entre contas Exchange |
Agora você pode criar uma regra do Outlook que exclui e-mails com um cabeçalho específico usando uma macro VBA anexada à ação Executar script. Teste a regra com uma mensagem que contenha o cabeçalho para confirmar que a exclusão funciona. Para uma solução mais permanente sem macros, considere usar uma regra de transporte no servidor Exchange se você tiver acesso de administrador. A regra de transporte pode filtrar qualquer cabeçalho antes que a mensagem chegue à Caixa de Entrada, eliminando a necessidade de código VBA no lado do cliente.