Tu jefe te acaba de pedir que resuelvas el "problema del correo electrónico" que ralentiza la empresa. Hay cientos de correos electrónicos automatizados, con datos que se introducen manualmente cada mañana, atascando los buzones de los empleados.
Tú, como eres inteligente y eficiente, ves inmediatamente el potencial de crear un sistema para analizar correos electrónicos. ¡Gran idea! Aunque puede ser un poco más complicado que unos pocos scripts y esfuerzo. Aquí tienes seis pasos para crear un analizador de correo electrónico y automatizar con éxito tu flujo de trabajo de introducción de datos de correo electrónico.
Antes de empezar: definamos analizar y qué es el análisis de correo electrónico
En informática, el análisis es la acción de dividir un texto en subpartes, siguiendo un conjunto de reglas.
Un analizador de correo electrónico es una forma de hacer que un ordenador lea correos electrónicos y actúe sobre ellos de acuerdo con un conjunto de reglas. Idealmente, ese sistema extraerá automáticamente los datos relevantes de esos correos electrónicos y los introducirá en tu aplicación de back-end. Consulta el siguiente artículo sobre una inmersión profunda en el análisis de correo electrónico.
Promoción descarada: ¿Conoces Parseur?
Crear tu propio analizador de correo electrónico es un proyecto divertido para comprender cómo funcionan las cosas.
Pero lleva mucho tiempo.
Parseur se creó desde cero a finales de 2015, y se necesitaron alrededor de 5.000 horas de trabajo a lo largo de seis años, solo para construir el back-end. El front-end (toda la interfaz de usuario, incluido el editor de plantillas) también requirió miles de horas de trabajo para su creación. El equipo que está detrás de Parseur está formado por desarrolladores experimentados con más de 20 años de codificación profesional a sus espaldas.
No hemos terminado y ni siquiera podemos estimar cuánto tiempo llevaría crear un analizador de texto "suficientemente bueno".
Si necesitas resultados rápidos, deberías probar Parseur. Parseur es un analizador de correo electrónico gestionado y fácil de usar que te ahorrará horas configurando tu propia solución. Echa un vistazo al amplio conjunto de características de Parseur.
1. Obtén los correos electrónicos
Por ahora, los correos electrónicos llegan a las bandejas de entrada individuales de los empleados, a las listas de correo de los equipos o al buzón de toda la empresa.
El primer paso sería configurar una cuenta de correo electrónico para centralizar todos esos buzones. O incluso, configurar tu propio servidor de correo electrónico, también conocido como servidor SMTP.
Si sabes lo que haces, aquí tienes algunos servidores SMTP que son bastante populares en este momento:
- Exim es un agente de transferencia de correo electrónico (otro nombre para el servidor de correo electrónico) gratuito y de código abierto. Es el servidor SMTP más popular, y está ganando popularidad un poco más rápido que el segundo, Postfix.
- Postfix también es gratuito y de código abierto. Tiene la reputación de "simplemente funciona", con problemas mínimos. Según este artículo sobre la cuota de mercado de los servidores de correo electrónico, Exim y Postfix juntos representan el 80% de todos los servidores de correo electrónico.
- En el lado de Microsoft, el omnipresente Exchange. Puedes obtener los correos electrónicos de él a través de EWS en lugar de los más anticuados POP3 o IMAP. Hoy en día, incluso puedes conseguir que Microsoft lo aloje por ti, por una cuota.
- Construye el tuyo propio. Ese camino será largo y tortuoso, pero aprenderás mucho por el camino. Al final, tu servidor podría adaptarse mejor a tus necesidades. Siempre que tus necesidades no impliquen la compatibilidad con la miríada de clientes de correo electrónico que existen. Si estás decidido a seguir ese camino, Python tiene un módulo encantador en su biblioteca estándar para ayudarte a empezar. Echa un vistazo a smtpd.
Ten en cuenta que enviar muchos correos electrónicos sin ser incluido en una lista negra es un arte en sí mismo y es mejor dejarlo en manos de especialistas.
También ten en cuenta que la popularidad de configurar tu propio servidor de correo electrónico está disminuyendo. En nuestra era de la nube y el SaaS, es más conveniente utilizar un servicio de correo electrónico alojado que haga el trabajo sucio del correo electrónico por ti. Estos son los principales actores en este espacio:
- Postmark se centra en la entregabilidad y la fiabilidad. Además, tiene un plan gratuito.
- Mandrill tuvo la ventaja de ser el primero en actuar y sigue siendo popular. Se centra en los correos electrónicos de marketing y transaccionales.
- Sendgrid también se posiciona como una plataforma de correo electrónico de marketing y transaccional.
- Mailgun se centra más en los desarrolladores y las API. Además, tiene un plan gratuito.
En Parseur nos encanta Postmark. Su API es genial y la documentación estelar. Hay muchos SDK para los lenguajes de programación más populares.
2. Traducir el correo electrónico a un formato de datos adecuado
El correo electrónico es un formato antiguo, del tipo "creado antes de Star Wars", y ha acumulado algunas dificultades a lo largo de las décadas. Por ejemplo, el manejo de caracteres internacionales (no estadounidenses) no formaba parte de la especificación inicial. Para manejar caracteres especiales, como €, hay que tener en cuenta 3 documentos técnicos (también llamados RFC):
- RFC 2047 proporciona soporte para nombres y asuntos internacionales, en la cabecera del correo electrónico
- RFC 5890 proporciona soporte para nombres de dominio internacionales en el Sistema de Nombres de Dominio (DNS)
- RFC 6532 permite el uso de UTF-8 (otra forma de almacenar texto internacional) en una sección de cabecera de correo
Una vez más, servicios como Postmark o Mailgun pueden salvarte el día y hacer la traducción por ti. Puedes olvidarte de las historias de terror que involucran UTF-8, MIME y cp1252 (¿nunca has oído hablar de UTF-8, MIME o cp1252? Envidio tu vida).
Por ejemplo, si utilizas Mailgun, sus servidores recibirán el correo electrónico por ti y lo transformarán en un documento JSON fácil de manejar, ocupándose de todos los RFC conocidos por la humanidad. A continuación, lo enviarán a tu propio servidor en la URL que desees como webhook en una sola solicitud HTTP POST.
Para los curiosos, aquí hay una lista de todos los RFC relacionados con SMTP. De nada.
Por ejemplo, un simple correo electrónico recibido en Mailgun llegará a tu servidor con este aspecto:
{
"subject": "My favorite café",
"sender": "John Doe <[email protected]>",
"recipient": "Mr. Parseur <[email protected]>",
"message": "It's called Awesome Café! See directions in the attachment. Bye.",
"attachements": [
{ "name": "directions.pdf", "content": "https://url.with.content" },
{ "name": "cappucino.jpg", "content": "https://another.content.url" }
]
/*... otros datos interesantes aquí (lee el documento, Luke) ...*/
}
¿No es maravilloso? Compara esto con un formato de correo electrónico 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==
Afortunadamente, la mayoría de los lenguajes de programación decentes vienen con una biblioteca para descifrar correos electrónicos, como el módulo email para Python, o la biblioteca RubyMail de Ruby.
3. Introducir los datos en la base de datos
A partir de aquí, puedes contar con tus habilidades de codificación para manejar todas estas solicitudes HTTP y convertirlas en bonitas entradas en la base de datos que elijas.
Aquí tienes algunos lenguajes de programación y frameworks populares que te ayudarán en la tarea, en orden de creciente popularidad:
El código involucrado debería ser trivial si no estás apuntando a ningún formato en particular. Sin embargo, es posible que tengas que averiguar el formato que acepta tu software empresarial y convertirlo a este formato. Los formatos de intercambio más populares son CSV y JSON, pero algunas aplicaciones empresariales utilizan formatos binarios más oscuros.
Si todo lo que necesitas es almacenamiento (posiblemente para tu propia aplicación empresarial personalizada), entonces solo tienes que elegir cómo vas a almacenar los datos.
Si sabes que nunca vas a necesitar hacer estadísticas u operaciones no secuenciales en estos correos electrónicos almacenados, puedes considerar el uso de MongoDB, por ejemplo. Sin embargo, desaconsejo su uso, utilizando argumentos de esta impresionante entrada de blog.
Cualquier sistema de gestión de bases de datos relacionales, basado en SQL almacenará tus correos electrónicos perfectamente. Como mínimo, tendrás que definir dos tablas: una para los correos electrónicos y otra para sus archivos adjuntos, si decides almacenarlos.
Cualquier motor de base de datos SQL debería ser capaz de manejarlo, siempre y cuando tu volumen y carga quepan en un servidor. Hay algunas opciones populares para las bases de datos relacionales hoy en día:
- MySQL, y su bifurcación recomendada, pero no oficial, MariaDB son opciones básicas y todavía populares de servidores de bases de datos. Ten en cuenta que desde que Oracle compró MySQL, el soporte no es tan fuerte como solía ser. Sorpresa.
- Postgresql es un motor de base de datos más grande y rico en funciones, con más opciones de escalado y una configuración más compleja que MySQL.
- Además de estas bases de datos gratuitas y de código abierto, existe, por supuesto, Oracle, con un montón de funciones para responder a las necesidades de las grandes empresas. Muy grande, complejo y caro. ¿Estás seguro de que tu sencilla solución de almacenamiento de correo electrónico necesita tanta escalabilidad?
- También en el lado comercial, Microsoft SQL server ha mejorado mucho en los últimos años y ahora se presenta como un competidor viable de Oracle.
Aquí estamos. Si querías poner el contenido de tus correos electrónicos tal cual en la base de datos de tu aplicación, ya está hecho.
Pero ¿por qué detenerse aquí? Ahora tienes un montón de datos interesantes a tu alcance. Este conjunto de datos es muy interesante porque es relevante para tu negocio principal. Tus correos electrónicos están probablemente llenos de facturas, gastos de viaje, presupuestos, clientes potenciales y clientes.
¿Qué tal si vamos un paso más allá y extraemos los datos relevantes de estos correos electrónicos? Refinar los datos que tienes puede ayudarte a automatizar el flujo de trabajo de tu negocio, ahorrándote tiempo a ti y a tus empleados.
4. Extraer el texto relevante de cada correo electrónico
Aquí es donde realmente tiene lugar el análisis. Lo ideal sería hacer esto:
![Esquema de un analizador de correo electrónico que transforma un correo electrónico recibido en datos estructurados (por ejemplo, una hoja de cálculo o una base de datos) Una captura de pantalla de la descripción general del analizador de correo electrónico](/images/email-parser-overview.webp)
Estos son algunos enfoques para resolver este vasto problema:
Análisis estadístico de palabras, o "recuento de palabras"
El análisis estadístico está bien adaptado a los correos electrónicos sin ningún formulario predefinido, normalmente los correos electrónicos escritos por un humano. Podrías definir varias categorías de correo electrónico con un conjunto de palabras pertenecientes a cada una de estas categorías. A continuación, analizarías cada correo electrónico, contarías las palabras de cada categoría que contiene y decidirías si el correo electrónico pertenece a una o varias de estas categorías.
Esto funciona bastante bien para el análisis de sentimientos. Por ejemplo, podrías definir una categoría de "cliente contento" y una categoría de "cliente furioso" y enviar los correos electrónicos de los clientes contentos a tu jefe y los de los clientes furiosos a la papelera. Es broma, pero entiendes la idea.
Pero, como ya sabrás, la comunicación entre humanos es propensa a errores, ambigüedades y es muy sensible al contexto. Y, mientras no tengamos una inteligencia artificial real, esas mismas ambigüedades no se resolverán. Pueden hacer que tu sistema sea poco fiable en el mejor de los casos, e inútil en el peor.
Expresiones regulares
Este enfoque funciona mejor para los correos electrónicos generados automáticamente, en los que la mayor parte del texto permanece igual entre los correos electrónicos.
Por ejemplo, digamos que quieres analizar un millón de correos electrónicos de reserva de American Airlines y extraer el nombre del pasajero de cada uno de ellos. Esto podría hacerse creando una expresión regular que coincida con todo el correo electrónico y solo capture el nombre del pasajero. Suena fácil, ¿verdad? Pero, ¿qué ocurre cuando otras partes del correo electrónico también cambian? ¿Y si hay tres pasajeros en ese vuelo en lugar de uno solo? Vaya.
Python tiene una bonita biblioteca para expresiones regulares. Las expresiones regulares, o regexp para abreviar, forman parte del núcleo de Ruby como el módulo Regexp. También son ciudadanos de primera clase en JavaScript.
El inconveniente es que las expresiones regulares son complejas de mantener y su legibilidad es pasable en el mejor de los casos. Muchos clientes de Parseur nos han dicho que inicialmente empezaron a desarrollar su propio motor de análisis utilizando expresiones regulares, pero que no pudieron mantenerlo frente al flujo de correos electrónicos en constante cambio que recibían.
5. ¿Una solución gestionada? ¡Parseur puede ayudarte!
¿No sería estupendo obtener los datos que deseas, ordenados en las columnas correctas de una hoja de cálculo de Excel o una base de datos?
Bueno, ese es nuestro objetivo aquí en Parseur. Te proporcionamos una sencilla interfaz de "apuntar y hacer clic" para que definas de una vez por todas qué datos son relevantes para ti. A continuación, puedes enviar correos electrónicos similares, y sus datos se extraerán y se colocarán automáticamente en una hoja de cálculo de Excel.
No tienes que crear tu propio analizador de correo electrónico desde cero. No tienes que hacer ningún procesamiento manual después de esa primera y corta sesión de apuntar y hacer clic. Cada correo electrónico se convierte en una fila de Excel por sí mismo.
6. Integrar en tu software empresarial
Una vez que los datos extraídos estén perfectamente ubicados en tu hoja de cálculo de Excel, "solo" tienes que llevarlos a donde realmente importan: a tu aplicación empresarial.
Herramientas como Zapier o Make pueden ayudarte enormemente en este aspecto, ya que pueden conectar tu aplicación de correo electrónico con tu aplicación empresarial. Todo lo que tienes que hacer es escribir un conector para esos servicios. Después, podrás disfrutar de los muchos otros conectores que forman parte de su ecosistema.
Parseur se integra con Google Sheets, Zapier, Integromat, Microsoft Flow y Getswift, abriendo tus datos analizados a miles de aplicaciones con solo unos clics.
¡Buena suerte!
Última actualización el