Como criar um analisador de e-mail do zero

Então, seu chefe acabou de lhe pedir para resolver o "problema do e-mail" que está atrasando a empresa. Há centenas de e-mails automatizados cujos dados são inseridos manualmente todas as manhãs, obstruindo as caixas de entrada dos funcionários.

Você, sendo inteligente e eficiente, imediatamente vê o potencial de criar um sistema de análise de e-mail. Ótima ideia! Porém, pode ser um pouco mais envolvente do que apenas alguns scripts e força de vontade. Aqui estão seis etapas para criar um analisador de e-mail e automatizar com sucesso seu fluxo de trabalho de entrada de dados de e-mail.

Antes de começarmos: vamos definir analisar e o que é análise

Em ciência da computação, analisar é a ação de dividir um texto em subpartes, seguindo um conjunto de regras.

Um analisador de e-mail é uma forma de fazer um computador ler e-mails e agir sobre eles conforme um conjunto de regras. Idealmente, esse sistema irá extrair automaticamente dados relevantes desses e-mails e enviá-los para seu aplicativo de back-office. Confira o seguinte artigo para um mergulho profundo sobre análise de e-mail.

Propaganda descarada: Você já conhece o Parseur?

Construir seu próprio analisador de e-mail é um projeto divertido para entender como as coisas funcionam por trás dos panos.

Mas é um projeto que consome muito tempo.

Crie sua conta gratuita
Poupe tempo e esforço com Parseur. Automatize seus documentos.

O Parseur foi criado do zero no final de 2015 e levou cerca de 5.000 horas-homem ao longo de seis anos, apenas para construir o back-end. O front-end (toda a interface do usuário, incluindo o editor de modelos) também levou milhares de horas-homem para ser desenvolvido. A equipe por trás do Parseur é composta por desenvolvedores experientes com mais de 20 anos de programação profissional em seus currículos.

Ainda não terminamos e nem conseguimos estimar quanto tempo levaria para criar um analisador de texto "suficientemente bom".

Se você precisa de resultados rápidos, experimente o Parseur. O Parseur é um analisador de e-mail gerenciado e fácil de usar que vai te poupar horas na configuração de sua própria solução. Confira o extenso conjunto de recursos do Parseur.

1. Obtenha os e-mails

Por enquanto, os e-mails estão chegando nas caixas de entrada individuais dos funcionários, em listas de distribuição de equipes ou em uma caixa de entrada geral da empresa.

O primeiro passo seria configurar uma conta de e-mail para centralizar todas essas caixas de entrada. Ou até mesmo, Deus me livre, configurar seu próprio servidor de e-mail, também conhecido como servidor SMTP.

Se você sabe o que está fazendo, aqui estão alguns servidores SMTP bastante populares no momento:

  • Exim é um agente de transferência de e-mail gratuito e de código aberto (mais um nome para servidor de e-mail). É o servidor SMTP mais popular e está crescendo em popularidade um pouco mais rápido do que o segundo, Postfix.
  • Postfix também é gratuito e de código aberto. Tem a reputação de "simplesmente funcionar", com problemas mínimos. Segundo este artigo sobre participação de mercado de servidores de e-mail, Exim e Postfix juntos representam 80% de todos os servidores de e-mail.
  • Do lado da Microsoft, o onipresente Exchange. Você pode obter os e-mails dele pelo EWS em vez dos mais antigos POP3 ou IMAP. Atualmente, você pode até pedir para a Microsoft hospedar para você, mediante uma taxa.
  • Construa o seu próprio. Esse caminho será longo e sinuoso, mas você aprenderá muito no processo. No final, seu servidor pode se adaptar melhor às suas necessidades. Se as suas necessidades não envolverem compatibilidade com os zilhões de clientes de e-mail por aí, claro. Se você está determinado a seguir esse caminho, Python tem um módulo ótimo em sua biblioteca padrão para começar. Dê uma olhada em smtpd.

Observe que enviar muitos e-mails sem ser colocado na lista negra é uma arte em si, melhor deixada para os especialistas.

Também vale notar que está cada vez menos comum montar o próprio servidor de e-mail. Nesta nossa era de nuvem e SaaS, é mais conveniente usar um serviço de e-mail em nuvem que faz o trabalho pesado para você. Aqui estão os principais provedores nesse setor:

  • Postmark foca em entregabilidade e confiabilidade. Também possui um plano gratuito.
  • Mandrill saiu na frente e continua popular. É voltado para e-mails de marketing e transacionais.
  • Sendgrid também se posiciona como plataforma para e-mails de marketing e transacionais.
  • Mailgun tem foco maior em desenvolvedores e API. Também conta com plano gratuito.

Adoramos o Postmark aqui no Parseur. A API deles é ótima e a documentação é fantástica. Existem muitos SDKs para todas as linguagens de programação populares por aí.

2. Converta o e-mail em um formato de dados adequado

E-mail é um formato antigo, do tipo “criado antes de Star Wars”, e acumulou algumas peculiaridades ao longo das décadas. Por exemplo, o tratamento de caracteres internacionais (não americanos) não fazia parte da especificação original. Para lidar com caracteres especiais, como €, você precisa levar em consideração 3 documentos técnicos (também conhecidos como RFC):

  • RFC 2047 fornece suporte para nomes internacionais e linhas de assunto, no cabeçalho do e-mail
  • RFC 5890 fornece suporte para nomes de domínio internacionais no Sistema de Nomes de Domínio (DNS)
  • RFC 6532 permite o uso de UTF-8 (outra forma de armazenar texto internacional) em uma seção de cabeçalho de e-mail

Mais uma vez, serviços como Postmark ou Mailgun podem salvar seu dia aqui e fazer a tradução para você. Você pode esquecer histórias de terror envolvendo UTF-8, MIME e cp1252 (nunca ouviu falar em UTF-8, MIME ou cp1252? Eu invejo sua vida).

Por exemplo, se usar o Mailgun, os servidores receberão o e-mail para você e o transformarão em um documento JSON fácil de manipular, cuidando de todos os RFC conhecidos pela humanidade. Em seguida, ele irá enviá-lo para o seu próprio servidor no endereço que você quiser, como um webhook em uma única solicitação HTTP POST.

Para os curiosos, aqui está uma lista de todos os RFCs relacionados ao SMTP. De nada.

Por exemplo, um e-mail simples recebido no Mailgun chegará ao seu servidor assim:

{
  "subject": "Meu café favorito",
  "sender": "John Doe <[email protected]>",
  "recipient": "Sr. Parseur <[email protected]>",
  "message": "É chamado Awesome Café! Veja as instruções no anexo. Tchau.",
  "attachements": [
    { "name": "directions.pdf", "content": "https://url.with.content" },
    { "name": "cappucino.jpg", "content": "https://another.content.url" }
  ]
  /*... outras informações interessantes aqui (leia a documentação, Luke) ...*/
}

Não é maravilhoso? Compare isso com um formato tradicional de e-mail:

  MIME-Version: 1.0
  Received: by 102.29.23.176 with HTTP; Sat, 12 Aug 2016 14:13:31 -0700 (PDT)
  Date: Sat, 12 Aug 2016 14:13:31 -0700
  Delivered-To: =?ISO-8859-1?Q?Mr. Parseur <[email protected]>
  Message-ID: <CAAJL_=kPAJZ=fryb21wBOALp8-XOEL-h9j84s3SjpXYQjN3Z3A@mail.gmail.com>
  Subject: =?ISO-8859-1?Q?My=20Favorite=20Caf=E9
  From: =?ISO-8859-1?Q?John Doe <[email protected]>
  To: =?ISO-8859-1?Q?Mr. Parseur <[email protected]>
  Content-Type: multipart/mixed; boundary=mixed
  ==mixed
  Content-Type: multipart/alternative; boundary=alternative
  ==alternative
  Content-Type: text/plain; charset="utf-8"
  It's called Awesome Caf=C3=A9! See directions in the attachm= ent. Bye.
  ==alternative
  Content-Type: text/html; charset="utf-8"
  It's called <b>Awesome Caf=C3=A9</b>! See directions in the = attachment. Bye. ==alternative== ==mixed
  Content-Type: document/pdf; name="directions.pdf"
  Content-Disposition: attachment; filename="directions.pdf"
  Content-Transfer-Encoding: base64
  iVBORw [... the whole encoded attachment here ...] RK5CYII=
  ==mixed
  Content-Type: image/jpg; name="capuccino.jpg"
  Content-Disposition: attachment; filename="capuccino.jpg"
  Content-Transfer-Encoding: base64
  G+aHAAAA [... another attachment encoded here ...] ORK5CYII=
  ==mixed==

Felizmente, a maioria das linguagens de programação decentes tem bibliotecas para decifrar e-mails, como o módulo email para Python, ou a biblioteca RubyMail do Ruby.

3. Coloque os dados no banco de dados

Daqui em diante, você pode contar com suas habilidades de programação para lidar com todas essas requisições HTTP e transformá-las em entradas bem organizadas no banco de dados de sua escolha.

Aqui estão algumas linguagens e frameworks populares que podem te ajudar nessa tarefa, em ordem de tendência crescente:

O código envolvido deve ser simples, caso você não esteja mirando nenhum formato específico. Porém, pode ser necessário descobrir qual formato seu software de negócios aceita e convertê-lo para esse formato. Os formatos populares de intercâmbio incluem CSV e JSON, mas alguns softwares de negócios usam formatos binários mais obscuros.

Se tudo o que você precisa é de armazenamento (possivelmente para seu próprio aplicativo de negócios personalizado), então basta escolher como irá armazenar os dados.

Se você tem certeza de que nunca precisará fazer estatísticas ou operações não sequenciais nesses e-mails armazenados, pode considerar usar o MongoDB. No entanto, não recomendo, pelos motivos deste excelente post de blog.

Qualquer sistema de gerenciamento de banco de dados relacional, baseado em SQL, vai armazenar seus e-mails sem problemas. No mínimo, você terá que definir duas tabelas: uma para e-mails e outra para os anexos, caso decida armazená-los.

Qualquer mecanismo de banco de dados SQL vai dar conta, desde que o volume e o processamento caibam em um servidor. Existem algumas opções populares para bancos de dados relacionais atualmente:

  • MySQL e seu fork recomendado, mas não oficial, MariaDB ainda são escolhas básicas e muito populares. Vale notar que, desde que a Oracle comprou o MySQL, o suporte não é tão forte quanto costumava ser. Surpresa.
  • Postgresql é um mecanismo de banco de dados maior e mais rico em funcionalidades, com mais opções de escala e configuração um pouco mais complexa que o MySQL.
  • Fora os bancos gratuitos e open source, há também o Oracle, com uma tonelada de recursos para grandes empresas. Muito grande, complexo e caro. Tem certeza que sua solução simples de armazenamento de e-mails precisa de tanta escalabilidade?
  • Também no lado comercial, Microsoft SQL Server melhorou muito nos últimos anos, sendo hoje uma opção viável frente ao Oracle.

Pronto. Se tudo o que você queria era armazenar o conteúdo dos e-mails no banco de dados do seu aplicativo, seu processo já está concluído.

Mas por que parar por aqui? Agora você tem muitos dados interessantes disponíveis. Esse conjunto de dados é particularmente importante porque está diretamente relacionado ao seu negócio. Seus e-mails provavelmente estão cheios de faturas, despesas de viagem, orçamentos, leads e clientes.

Que tal ir um passo além e extrair dados relevantes desses e-mails? Refinar os dados disponíveis pode ajudar a automatizar os processos do seu negócio, economizando tempo para você e seus colaboradores.

4. Extraia o texto relevante de cada e-mail

É aqui que a análise propriamente dita acontece. O ideal é conseguirmos fazer isso:

Uma captura de tela da visão geral do analisador de e-mail
Esquema de um analisador de e-mail transformando um e-mail recebido em dados estruturados (por exemplo, uma planilha, ou um banco de dados)

Aqui estão algumas abordagens para resolver esse grande problema:

Análise Estatística de Palavras, ou "contagem de palavras"

A análise estatística funciona bem para e-mails sem formato padronizado, geralmente escritos por humanos. Você pode definir várias categorias de e-mail, cada uma com um conjunto de palavras associadas. Então, ao analisar cada e-mail, você contaria quantas palavras de cada categoria aparecem e decidiria se o e-mail se encaixa em uma ou mais categorias.

Isso funciona muito bem, por exemplo, para análise de sentimentos. Você poderia ter a categoria "cliente feliz" e "cliente furioso" e encaminhar os e-mails dos clientes felizes para seu chefe e os dos clientes furiosos para a lixeira. Brincadeira, mas você entendeu o conceito.

Mas, como já deve imaginar, a comunicação entre humanos é sujeita a erros, ambiguidades e depende muito do contexto. E, enquanto a inteligência artificial real não existir, essas ambiguidades vão persistir. Isso pode deixar seu sistema pouco confiável, no melhor dos casos, ou completamente inútil, no pior.

Expressões regulares

Essa abordagem é mais eficaz para e-mails gerados automaticamente, em que a maior parte do texto é igual entre as mensagens.

Por exemplo, digamos que você queira analisar um milhão de e-mails de reservas da American Airlines e extrair o nome do passageiro de cada um. Isso pode ser feito criando uma expressão regular que identifique todo o e-mail e capture apenas o nome do passageiro. Parece fácil, não? Mas e quando outras partes do e-mail mudam também? E se houver três passageiros no mesmo voo, e não só um? Oops.

Python tem uma ótima biblioteca para expressões regulares. Expressões regulares, ou regexp, fazem parte do núcleo Ruby como o módulo Regexp. Também são recursos nativos em JavaScript.

A desvantagem é que Expressões Regulares são difíceis de manter e têm leitura apenas razoável. Muitos clientes da Parseur nos contaram que começaram desenvolvendo seus próprios sistemas de análise usando Regexps, mas não conseguiram mantê-los frente ao fluxo de e-mails em constante mudança.

5. Uma solução gerenciada? O Parseur pode ajudar!

Não seria ótimo receber apenas os dados que você precisa, já organizados nas colunas certas de uma planilha do Excel ou num banco de dados?

Pois esse é o objetivo do Parseur. Fornecemos uma interface simples de "apontar e clicar" para você definir uma vez o que é relevante. Depois, basta enviar e-mails semelhantes e seus dados serão extraídos e colocados automaticamente numa planilha do Excel.

Você não precisa criar um analisador de e-mail do zero nem fazer nenhum processamento manual depois daquela primeira rápida sessão de apontar e clicar. Cada e-mail vira, sozinho, uma linha no Excel.

6. Integre ao seu software de negócios

Depois que seus dados extraídos estiverem organizados em sua planilha do Excel, só falta colocá-los onde importa: em seu aplicativo de negócios.

Ferramentas como Zapier ou Make podem te ajudar muito aqui, já que conectam seu app de e-mail ao seu app de negócios. Tudo que você precisa fazer é criar um conector para esses serviços e aproveite todos os outros conectores já disponíveis nesse ecossistema.

O Parseur integra-se ao Google Sheets, Zapier, Integromat e Microsoft Power Automate, permitindo abrir seus dados analisados para milhares de aplicações com apenas alguns cliques.

Boa sorte!

Última atualização em

Software de extração de dados baseado em IA.
Comece a usar o Parseur hoje mesmo.

Automatize a extração de texto de e-mails, PDFs e planilhas.
Economize centenas de horas de trabalho manual.
Adote a automação do trabalho com IA.

Parseur rated 5/5 on Capterra
Parseur.com has the highest adoption on G2
Parseur rated 5/5 on GetApp
Parseur rated 4.5/5 on Trustpilot