Como remover conteúdo repetitivo em e-mails?

2

Eu gostaria de remover automaticamente o conteúdo das mensagens repetitivas nos e-mails recebidos.

Por exemplo, sempre que eu troco e-mails com uma pessoa na minha empresa, gostaria de poder filtrar a conversa de conteúdo inútil e repetitivo, como assinaturas e cabeçalhos (De :, Data :, CC :, Assunto:. ..).

Não tenho experiência com Macros / VBA e não encontrei nenhuma dica em livros do Outlook / VB aos quais eu tinha acesso. Eu tenho alguma experiência com Python, mas é muito básico (eu fiz o curso Aprenda Python The Hard Way).

    
por pierault 24.10.2012 / 19:54

1 resposta

0

Esta resposta (por via de verdade) fornece um passo-a-passo gráfico, passo-a-passo de como configurar uma regra e programar uma macro que modifica os e-mails recebidos à medida que são recebidos

Você só precisa adaptar o código para fazer o processamento para remover o "conteúdo repetitivo" que não deseja ver.

O problema geral de remover conteúdo repetitivo é realmente complicado, computacionalmente.

Assumindo que uma "string repetitiva" é uma substring que já ocorreu dentro do texto, você teria uma estrutura de loop como essa ( pseudocode , não tente copiar isso em um programa):

For i = 1 To Len(str)
    For j = i To Len(str)
        needle = substring(str, i, j)
        nlen = Len(needle)
        For k = 1 To Len(str)
            match = substring(str, k, k + nlen)
            If needle = match Then
                '...do stuff
            End If
        Next
    Next
Next

Parece bastante complexo. Além disso, esse tipo de loop pegaria coisas como "Pettitte" (um sobrenome) e mudaria para "Peti" (o resto dos caracteres são substrings de comprimento 1 que já ocorreram). Você teria que definir um comprimento mínimo para a "agulha", de modo a evitar ter no máximo uma instância de cada letra do alfabeto. Então você teria que realizar algumas análises na string para determinar se é "texto do cabeçalho" ou algo que você deseja remover. Caso contrário, pegaria algo como "você não deveria fazer isso. Eu realmente, strongmente aconselho que você não faça isso". e mude para "você não deveria fazer isso. Eu realmente recomendo strongmente que você"

Se você não quiser usar a maneira geral (ingênua) de encontrar conteúdo duplicado, o que poderia excluir muitos conteúdos significativos, você teria que decidir:

  • Quais substrings tentar detectar duplicatas de;
  • Quais instâncias das duplicatas para manter e quais excluir.

As funções InStr e Mid no VBA devem ser úteis. Pressione F2 no seu teclado no editor do VBA para ver a lista de funções disponíveis nos vários módulos. As funções de string incorporadas no módulo VBA devem ser úteis.

Eu não acho que algo assim já exista em um formato pré-gravado que você possa usar e usar, mas se tudo o que você deseja remover são cabeçalhos de e-mail redundantes como De :, Para :, Assunto :, deve ser bastante fácil de detectá-los usando algumas correspondências de substring ou regex. Se você ficar realmente preso nas entranhas do código, acho que uma pergunta do StackOverflow seria mais apropriada como acompanhamento.

    
por 24.10.2012 / 20:21