Como criar um analisador de e-mail do zero

Portrait of Sylvain Josserand
por Sylvain Josserand
12 minutos de leitura
Última atualização em

Então, seu chefe acabou de lhe pedir para resolver o "problema do e-mail" que atrasa 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, vê imediatamente o potencial de criar um sistema de análise de e-mail. Ótima ideia! Mas saiba que pode ser um pouco mais complexo do que apenas alguns scripts e muito esforço. A seguir, apresentamos 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: o que é análise e o que é um analisador?

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 maneira de fazer um computador ler e-mails e agir sobre eles de acordo com um conjunto de regras. Idealmente, esse sistema extrairá automaticamente dados relevantes desses e-mails e os fornecerá ao 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 nos bastidores.

Mas 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 construído. A equipe por trás do Parseur é composta por desenvolvedores experientes com mais de 20 anos de codificação profissional em seus currículos.

Não terminamos e não podemos nem 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 amigável que economizará 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 às caixas de entrada individuais dos funcionários, às listas de discussão da equipe ou à caixa de correio da empresa.

O primeiro passo seria configurar uma conta de e-mail para centralizar todas essas caixas de correio. Ou até mesmo, 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 que são bastante populares no momento:

  • Exim é um agente de transferência de e-mail (MTA) gratuito e de código aberto. É o servidor SMTP mais popular e está ganhando 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. De acordo com este artigo sobre a 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 através do EWS em vez dos mais antiquados POP3 ou IMAP. Hoje em dia, você pode até fazer com que a Microsoft hospede para você, por uma taxa.
  • Construa o seu próprio. Esse caminho será longo e sinuoso, mas você aprenderá muito ao longo do caminho. No final, seu servidor pode se adequar melhor às suas necessidades. Se suas necessidades não implicarem 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 adorável em sua biblioteca padrão para você começar. Dê uma olhada em smtpd.

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

Observe também que a popularidade de configurar seu próprio servidor de e-mail está diminuindo. Em nossa era de nuvem e SaaS, é mais conveniente usar um serviço de e-mail hospedado que faz o trabalho sujo de e-mail para você. Aqui estão os principais players neste espaço:

  • Postmark se concentra na capacidade de entrega e confiabilidade. Além disso, tem um plano gratuito.
  • Mandrill teve uma vantagem inicial e continua popular. Ele se concentra em e-mails de marketing e transacionais.
  • Sendgrid também se posiciona como uma plataforma de e-mail de marketing e transacional.
  • Mailgun se concentra mais em desenvolvedor e API. Além disso, tem um plano gratuito.

Nós amamos o Postmark aqui no Parseur. Sua API é ótima e a documentação estelar. Existem muitos SDKs para todas as linguagens de programação mais populares por aí.

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

E-mail é um formato antigo, do tipo "criado antes de Star Wars", e acumulou algumas verrugas ao longo das décadas. Por exemplo, o tratamento de caracteres internacionais (não americanos) não fazia parte da especificação inicial. Para lidar com caracteres especiais, como €, você precisa levar em consideração 3 documentos técnicos (também chamados de 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 maneira 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 de 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 RFCs conhecidos pela humanidade. Em seguida, ele o postará em seu próprio servidor em qualquer URL que você desejar como 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 com a seguinte aparência:

{
  "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 o documento, Luke) ...*/
}

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

  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 vem com bibliotecas para decifrar e-mails, como o módulo email para Python ou a biblioteca RubyMail do Ruby.

3. Armazene os dados em um banco de dados

Daqui em diante, você pode contar com suas habilidades de codificação para lidar com todas essas solicitações HTTP e transformá-las em entradas agradáveis ​​em seu banco de dados de escolha.

Aqui estão algumas linguagens de programação e frameworks populares para ajudá-lo na tarefa, em ordem de tendência crescente:

O código envolvido deve ser trivial se você não estiver segmentando nenhum formato específico. No entanto, você pode ter que descobrir o formato que seu software de negócios aceita e converter para esse formato. Os formatos de intercâmbio populares incluem CSV e JSON, mas alguns aplicativos 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), você só precisa escolher como armazenará os dados.

Se você sabe que nunca precisará fazer estatísticas ou operações não sequenciais nesses e-mails armazenados, pode considerar usar o MongoDB, por exemplo. No entanto, eu desaconselho, usando argumentos de esta postagem de blog incrível.

Qualquer sistema de gerenciamento de banco de dados relacional, baseado em SQL, armazenará seus e-mails perfeitamente. No mínimo, você precisará definir duas tabelas: uma para e-mails e outra para seus anexos, se decidir armazená-los.

Qualquer mecanismo de banco de dados SQL deve lidar com isso, desde que seu volume e carga caibam em um servidor. Existem algumas opções populares para bancos de dados relacionais hoje em dia:

  • MySQL e seu fork recomendado, mas não oficial, MariaDB são opções básicas e ainda populares de servidores de banco de dados. Observe 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 rico em recursos, com mais opções de escalonamento e uma configuração mais complexa do que o MySQL.
  • Além desses bancos de dados gratuitos e de código aberto, existe, é claro, o Oracle, com uma infinidade de recursos para atender às necessidades de grandes empresas. Muito grande, complexo e caro. Tem certeza de que sua solução simples de armazenamento de e-mail precisa de tanta escalabilidade?
  • Também no lado comercial, o Microsoft SQL Server melhorou muito nos últimos anos e agora aparece como um concorrente viável da Oracle.

Aqui estamos. Se você quisesse colocar o conteúdo dos seus e-mails como está no banco de dados do seu aplicativo, você basicamente terminou.

Mas por que parar aqui? Agora você tem muitos dados interessantes ao seu alcance. Este conjunto de dados é muito interessante porque é relevante para o seu negócio principal. Seus e-mails provavelmente estão cheios de faturas, despesas de viagem, orçamentos, clientes em potencial e clientes.

Que tal ir um passo além e extrair dados relevantes desses e-mails? Refinar os dados que você possui pode ajudá-lo a automatizar seu fluxo de trabalho de negócios, economizando tempo para você e seus funcionários.

4. Extraia o texto relevante de cada e-mail

É aqui que a análise real realmente ocorre. Idealmente, queremos 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 este vasto problema:

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

A análise estatística é bem adaptada a e-mails sem nenhum formulário predefinido, normalmente e-mails escritos por um humano. Você pode definir várias categorias de e-mail com um conjunto de palavras pertencentes a cada uma dessas categorias. Você então analisaria cada e-mail, contaria as palavras nele de cada categoria e então decidiria se o e-mail se enquadra em uma ou mais dessas categorias.

Isso funciona muito bem para análise de sentimentos. Por exemplo, você pode definir uma categoria "cliente feliz" e uma categoria "cliente furioso" e enviar os e-mails dos clientes felizes para seu chefe e os e-mails dos clientes furiosos para a lixeira. Brincadeira, mas você entendeu a ideia.

Mas, como você deve saber, a comunicação de humano para humano está sujeita a erros, ambiguidades e é muito sensível ao contexto. E, enquanto não tivermos inteligência artificial real, essas mesmas ambiguidades não serão resolvidas. Eles podem tornar seu sistema não confiável na melhor das hipóteses e inútil na pior.

Expressões regulares

Essa abordagem funciona melhor para e-mails gerados automaticamente, com a maior parte do texto permanecendo o mesmo entre os e-mails.

Por exemplo, digamos que você queira analisar um milhão de e-mails de reserva da American Airlines e extrair o nome do passageiro de cada um deles. Isso pode ser feito criando uma expressão regular que corresponda ao e-mail inteiro e capture apenas o nome do passageiro. Parece fácil, certo? Mas o que acontece quando outras partes do e-mail também mudam? E se houver três passageiros naquele voo em vez de apenas um? Ops.

Python tem uma boa biblioteca para expressões regulares. Expressões regulares, ou regexp para abreviar, fazem parte do Ruby Core como o módulo Regexp. Eles também são cidadãos de primeira classe em JavaScript também.

A desvantagem é que as Expressões Regulares são complexas de manter e sua legibilidade é passável, na melhor das hipóteses. Muitos clientes da Parseur nos disseram que inicialmente começaram a desenvolver seu próprio mecanismo de análise usando Regexps, mas não conseguiram mantê-lo contra o fluxo de e-mails em constante mudança que estavam recebendo.

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

Não seria bom apenas obter os dados que você deseja, classificados nas colunas corretas de uma planilha ou banco de dados do Excel?

Bem, esse é o nosso objetivo aqui no Parseur. Estamos fornecendo a você uma interface simples de "apontar e clicar" para definir quais dados são relevantes para você de uma vez por todas. Você pode então enviar e-mails semelhantes e seus dados serão extraídos e colocados automaticamente em uma planilha do Excel.

Você não precisa criar um analisador de e-mail do zero sozinho. Você não precisa fazer nenhum processamento manual após aquela primeira sessão curta de apontar e clicar. Cada e-mail se torna uma linha do Excel por si só.

6. Integre com seu software comercial

Depois que seus dados extraídos estiverem perfeitamente organizados em sua planilha do Excel, você "só" precisa colocá-los onde importa: em seu aplicativo comercial.

Ferramentas como Zapier ou Make podem te ajudar muito aqui, pois podem conectar seu aplicativo de e-mail com seu aplicativo comercial. Tudo o que você precisa fazer é escrever um conector para esses serviços. Você pode então desfrutar dos muitos outros conectores que fazem parte de seu ecossistema.

O Parseur se integra ao Google Sheets, Zapier, Integromat e Microsoft Power Automate, abrindo seus dados analisados ​​para milhares de aplicativos em 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.com has the happiest users badge on Crozdesk
Parseur rated 5/5 on GetApp
Parseur rated 4.5/5 on Trustpilot