Come creare un parser di email da zero

Portrait of Sylvain Josserand
di Sylvain Josserand
12 minuti di lettura
Ultimo aggiornamento il

Il tuo capo ti ha appena chiesto di risolvere il "problema email" che rallenta l'azienda. Ci sono centinaia di email automatiche sulle quali l'immissione dei dati viene eseguita manualmente ogni mattina, intasando le caselle di posta dei dipendenti.

Tu, essendo intelligente ed efficiente, vedi immediatamente il potenziale per creare un sistema di parsing delle email. Ottima idea! Anche se potrebbe essere un po' più complicato di qualche script e un po' di olio di gomito. Ecco sei passaggi per creare un parser di email e automatizzare con successo il flusso di lavoro di inserimento dati dalle email.

Prima di iniziare: definiamo il parsing e cosa significa parsare

In informatica, il parsing è l'azione di dividere un testo in sottoparti, seguendo un insieme di regole.

Un parser di email è un modo per far sì che un computer legga le email e agisca su di esse secondo un insieme di regole. Idealmente, tale sistema estrarrà automaticamente i dati rilevanti da tali email e li invierà all'applicazione di back-office. Consulta il seguente articolo per una trattazione approfondita sul parsing delle email.

Un piccolo spot: conosci Parseur?

Costruire il proprio parser di email è un progetto divertente per capire come funzionano le cose dietro le quinte.

Ma richiede molto tempo.

Crea il tuo account gratuito
Risparmia tempo e fatica con Parseur. Automatizza i tuoi documenti.

Parseur è stato creato da zero alla fine del 2015 e ci sono volute circa 5.000 ore-uomo nel corso di sei anni, solo per costruire il back-end. Anche il front-end (tutta l'interfaccia utente, incluso l'editor di modelli) ha richiesto migliaia di ore-uomo per essere costruito. Il team che sta dietro a Parseur è composto da sviluppatori esperti con oltre 20 anni di esperienza professionale nella programmazione.

Non abbiamo finito e non possiamo nemmeno stimare quanto tempo ci vorrebbe per creare un parser di testo "sufficientemente buono".

Se hai bisogno di risultati rapidi, dovresti provare Parseur. Parseur è un parser di email gestito e intuitivo che ti farà risparmiare ore nella configurazione della tua soluzione. Dai un'occhiata all'ampio set di funzionalità di Parseur.

1. Ottenere le email

Per ora, le email arrivano nelle caselle di posta individuali dei dipendenti, nelle mailing list dei team o nella casella di posta aziendale.

Il primo passo sarebbe quello di configurare un account email per centralizzare tutte quelle caselle di posta. O addirittura, Dio non voglia, configurare il proprio server di posta elettronica, noto anche come server SMTP.

Se sai cosa stai facendo, ecco alcuni server SMTP abbastanza popolari al momento:

  • Exim è un agente di trasferimento email gratuito e open source (un altro nome per server email). È il server SMTP più popolare e sta guadagnando popolarità un po' più velocemente del secondo, Postfix.
  • Anche Postfix è gratuito e open source. Ha la reputazione di "funzionare e basta", con problemi minimi. Secondo questo articolo sulla quota di mercato dei server email, Exim e Postfix insieme rappresentano l'80% di tutti i server email.
  • Dal lato Microsoft, l'onnipresente Exchange. Puoi ottenere le email da esso tramite EWS invece dei più vecchi POP3 o IMAP. Oggigiorno, puoi persino far sì che Microsoft lo ospiti per te, a pagamento.
  • Costruisci il tuo. Quel percorso sarà lungo e tortuoso, ma imparerai molto lungo la strada. Alla fine, il tuo server potrebbe adattarsi meglio alle tue esigenze. Questo a meno che le tue esigenze non implichino la compatibilità con le miriadi di client di posta elettronica là fuori. Se sei determinato a percorrere quella strada, Python ha un delizioso modulo nella sua libreria standard per iniziare. Dai un'occhiata a smtpd.

Tieni presente che inviare molte email senza essere inserito nella blacklist è un'arte in sé ed è meglio lasciarla agli specialisti.

Tieni inoltre presente che la popolarità della configurazione del proprio server email sta diminuendo. Nella nostra era del cloud e del SaaS, è più conveniente utilizzare un servizio di posta elettronica ospitato che fa il lavoro sporco per te. Ecco i principali attori in questo spazio:

  • Postmark si concentra sulla deliverability e sull'affidabilità. Inoltre, ha un piano gratuito.
  • Mandrill ha avuto un vantaggio di primo arrivato e rimane popolare. Si concentra su email di marketing e transazionali.
  • Anche Sendgrid si posiziona come piattaforma di email di marketing e transazionali.
  • Mailgun si concentra maggiormente sugli sviluppatori e sulle API. Inoltre, ha un piano gratuito.

Noi di Parseur amiamo Postmark. La loro API è fantastica e la documentazione stellare. Ci sono molti SDK per tutti i linguaggi di programmazione più popolari in circolazione.

2. Tradurre l'email in un formato dati appropriato

L'email è un formato vecchio, del tipo "creato prima di Star Wars", e ha accumulato alcune imperfezioni nel corso dei decenni. Ad esempio, la gestione dei caratteri internazionali (non statunitensi) non faceva parte delle specifiche iniziali. Per gestire caratteri speciali, come €, è necessario tenere conto di 3 documenti tecnici (chiamati anche RFC):

  • RFC 2047 fornisce supporto per nomi e oggetti internazionali, nell'intestazione dell'email
  • RFC 5890 fornisce supporto per nomi di dominio internazionali nel Domain Name System (DNS)
  • RFC 6532 consente l'uso di UTF-8 (un altro modo per memorizzare testo internazionale) in una sezione dell'intestazione della posta

Ancora una volta, servizi come Postmark o Mailgun possono salvarti la giornata e fare la traduzione per te. Puoi dimenticare le storie dell'orrore che coinvolgono UTF-8, MIME e cp1252 (mai sentito parlare di UTF-8, MIME o cp1252? Invidio la tua vita).

Ad esempio, se si utilizza Mailgun, i server riceveranno l'email per te e la trasformeranno in un documento JSON facile da gestire, occupandosi di tutti gli RFC conosciuti dall'umanità. Lo pubblicherà quindi sul tuo server all'URL desiderato come webhook in una singola richiesta HTTP POST.

Per i curiosi, ecco un elenco di tutti gli RFC relativi a SMTP. Prego.

Ad esempio, una semplice email ricevuta su Mailgun arriverà al tuo server così:

{
  "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" }
  ]
  /*... altre informazioni interessanti qui (leggi il documento, Luke) ...*/
}

Non è meraviglioso? Confronta questo con un formato email tradizionale:

  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 [... l'intero allegato codificato qui ...] RK5CYII=
  ==mixed
  Content-Type: image/jpg; name="capuccino.jpg"
  Content-Disposition: attachment; filename="capuccino.jpg"
  Content-Transfer-Encoding: base64
  G+aHAAAA [... un altro allegato codificato qui ...] ORK5CYII=
  ==mixed==

Fortunatamente, la maggior parte dei linguaggi di programmazione decenti viene fornita con una libreria per decifrare le email, come il modulo email per Python o la libreria RubyMail di Ruby.

3. Inserire i dati nel database

D'ora in poi, puoi contare sulle tue capacità di programmazione per gestire tutte queste richieste HTTP e trasformarle in piacevoli voci nel database che preferisci.

Qui ci sono alcuni linguaggi di programmazione e framework popolari per aiutarti nel compito, in ordine di crescente tendenza:

Il codice coinvolto dovrebbe essere banale se non si punta a nessun formato particolare. Tuttavia, potresti dover scoprire il formato accettato dal tuo software aziendale e convertirlo in questo formato. I formati di interscambio popolari includono CSV e JSON, ma alcune applicazioni aziendali utilizzano formati binari più oscuri.

Se tutto ciò di cui hai bisogno è l'archiviazione (possibilmente per la tua applicazione aziendale personalizzata), devi solo scegliere come archiviare i dati.

Se sai che non avrai mai bisogno di fare statistiche o operazioni non sequenziali su queste email archiviate, potresti prendere in considerazione l'utilizzo di MongoDB, ad esempio. Tuttavia, lo sconsiglio, usando argomenti da questo fantastico post sul blog.

Qualsiasi sistema di gestione di database relazionale, basato su SQL archivierà le tue email correttamente. Come minimo, dovrai definire due tabelle: una per le email e un'altra per i loro allegati se decidi di archiviarli.

Qualsiasi motore di database SQL dovrebbe gestirlo, purché il volume e il carico si adattino a un server. Oggigiorno ci sono alcune scelte popolari per i database relazionali:

  • MySQL e il suo fork consigliato, ma non ufficiale, MariaDB sono scelte basilari e ancora popolari di server di database. Tieni presente che da quando Oracle ha acquistato MySQL, il supporto non è così forte come una volta. Sorpresa.
  • Postgresql è un motore di database più grande e ricco di funzionalità con più opzioni di scalabilità e una configurazione più complessa rispetto a MySQL.
  • Oltre a questi database gratuiti e open source, c'è, ovviamente, Oracle, con un sacco di funzionalità per rispondere alle esigenze delle grandi aziende. Molto grande, complesso e costoso. Sei sicuro che la tua semplice soluzione di archiviazione email abbia bisogno di tanta scalabilità?
  • Anche dal lato commerciale, Microsoft SQL Server è migliorato molto negli ultimi anni e ora appare come un valido concorrente di Oracle.

Eccoci qui. Se volevi inserire il contenuto delle tue email così com'è nel database della tua applicazione, hai praticamente finito.

Ma perché fermarsi qui? Ora hai molti dati interessanti a portata di mano. Questo set di dati è molto interessante perché è rilevante per il tuo core business. Le tue email sono probabilmente piene di fatture, spese di viaggio, preventivi, potenziali clienti e clienti.

Che ne dici di fare un ulteriore passo avanti ed estrarre i dati rilevanti da queste email? Affinare i dati che hai può aiutarti ad automatizzare il flusso di lavoro aziendale, facendo risparmiare tempo a te e ai tuoi dipendenti.

4. Estrarre il testo rilevante da ciascuna email

È qui che avviene effettivamente il parsing. Idealmente, vogliamo fare questo:

Una schermata di cattura della panoramica del parser di email
Schema di un parser di email che trasforma un'email ricevuta in dati strutturati (ad esempio, un foglio di calcolo o un database)

Ecco alcuni approcci per risolvere questo vasto problema:

Analisi statistica delle parole o "conteggio delle parole"

L'analisi statistica è ben adattata alle email senza un modulo predefinito, in genere email scritte da un essere umano. Potresti definire diverse categorie di email con un insieme di parole appartenenti a ciascuna di queste categorie. Quindi analizzeresti ogni email, conteresti le parole in essa contenute da ogni categoria e poi decideresti se l'email rientra in una o più di queste categorie.

Questo funziona abbastanza bene per l'analisi del sentiment. Ad esempio, potresti definire una categoria "cliente felice" e una categoria "cliente furioso" e inviare le email dei clienti felici al tuo capo e le email dei clienti furiosi nel cestino. Sto scherzando, ma hai capito l'idea.

Tuttavia, come potresti sapere, la comunicazione tra esseri umani è soggetta a errori, ambiguità ed è molto sensibile al contesto. E, finché non avremo una vera intelligenza artificiale, queste stesse ambiguità non saranno risolte. Possono rendere il tuo sistema inaffidabile nella migliore delle ipotesi e inutile nella peggiore.

Espressioni regolari

Questo approccio funziona meglio per le email generate automaticamente, con la maggior parte del testo che rimane lo stesso tra le email.

Ad esempio, supponiamo che tu voglia analizzare un milione di email di prenotazione da American Airlines ed estrarre il nome del passeggero da ciascuna di esse. Questo potrebbe essere fatto creando un'espressione regolare che corrisponda all'intera email e catturi solo il nome del passeggero. Sembra facile, vero? Ma cosa succede quando cambiano anche altre parti dell'email? E se ci fossero tre passeggeri su quel volo invece di uno solo? Ops.

Python ha una bella libreria per le espressioni regolari. Le espressioni regolari, o regexp in breve, fanno parte di Ruby Core come modulo Regexp. Sono anche cittadini di prima classe in JavaScript.

Il lato negativo è che le espressioni regolari sono complesse da mantenere e la loro leggibilità è al massimo passabile. Molti clienti Parseur ci hanno detto che inizialmente avevano iniziato a sviluppare il proprio motore di parsing utilizzando Regexp, ma non sono stati in grado di continuare a mantenerlo contro il flusso di email in continua evoluzione che stavano ricevendo.

5. Una soluzione gestita? Parseur può aiutarti!

Non sarebbe bello ottenere semplicemente i dati desiderati, ordinati nelle colonne corrette di un foglio di calcolo o database Excel?

Bene, questo è il nostro obiettivo qui a Parseur. Ti forniamo una semplice interfaccia "punta e clicca" per definire una volta per tutte quali dati sono rilevanti per te. Puoi quindi inviare email simili e i loro dati verranno estratti e inseriti automaticamente in un foglio di calcolo Excel.

Non devi creare tu stesso un parser di email da zero. Non devi eseguire alcuna elaborazione manuale dopo quella prima breve sessione di puntamento e clic. Ogni email diventa una riga di Excel a sé stante.

6. Integrazione nel tuo software aziendale

Una volta che i dati estratti sono ben inseriti nel tuo foglio di calcolo Excel, devi "solo" portarli dove conta: nella tua applicazione aziendale.

Strumenti come Zapier o Make possono aiutarti enormemente qui, in quanto possono connettere la tua applicazione email con la tua applicazione aziendale. Tutto quello che devi fare è scrivere un connettore per quei servizi. Puoi quindi goderti i molti altri connettori che fanno parte del loro ecosistema.

Parseur si integra con Google Sheets, Zapier, Integromat, Microsoft Flow e Getswift, aprendo i tuoi dati analizzati a migliaia di applicazioni in pochi clic.

Buona fortuna!

Ultimo aggiornamento il

Software di estrazione dati basato sull'IA.
Inizia a utilizzare Parseur oggi stesso.

Automatizza l'estrazione di testo da email, PDF e fogli di calcolo.
Risparmia centinaia di ore di lavoro manuale.
Adotta l'automazione del lavoro con l'IA.

Registrati gratuitamente
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