Jak stworzyć parser e-maili od podstaw

Więc Twój szef właśnie poprosił Cię o rozwiązanie „problemu z e-mailami”, który spowalnia działanie firmy. Każdego ranka setki automatycznych wiadomości muszą być ręcznie analizowane, co prowadzi do żmudnego wpisywania danych i zalewania skrzynek odbiorczych pracowników.

Jako osoba myśląca nowocześnie i efektywnie, od razu widzisz potencjał w automatyzacji tego procesu przez stworzenie systemu do obsługi e-maili. Świetna decyzja! Jednak taka automatyzacja to coś więcej niż kilka prostych skryptów. Oto sześć kroków, które pozwolą Ci stworzyć parser e-maili i zautomatyzować przetwarzanie danych z wiadomości.

Zanim zaczniemy: co oznacza parsowanie?

W informatyce parsowanie to proces dzielenia tekstu na części w zgodzie z określonym zestawem reguł.

Parser e-maili pozwala „nauczyć” komputer odczytywania wiadomości e-mail i działania zgodnie z przyjętymi zasadami. W idealnym scenariuszu system taki automatycznie wydobywa kluczowe dane z maili i przesyła je do aplikacji biznesowej firmy. Zajrzyj do artykułu wyjaśniającego definicję parsera e-maili.

Oczywista autoreklama: Znasz już Parseur?

Stworzenie własnego parsera e-maili to doskonały projekt edukacyjny, który pozwala zrozumieć, jak wszystko działa w praktyce.

Jednak to również bardzo czasochłonne zadanie.

Utwórz darmowe konto
Oszczędzaj czas i wysiłek z Parseur. Automatyzuj swoje dokumenty.

Parseur powstał od podstaw pod koniec 2015 roku. Samo zbudowanie back-endu pochłonęło ok. 5 000 roboczogodzin w ciągu sześciu lat, a prace nad warstwą front-end oraz edytorem szablonów również wymagały tysięcy godzin. Zespół odpowiedzialny za Parseur to doświadczeni inżynierowie z ponad 20-letnią praktyką.

Nawet nie próbujemy szacować, ile może zająć stworzenie parsera tekstu o odpowiedniej jakości.

Jeśli zależy Ci na szybkim wdrożeniu, przetestuj Parseur. Parseur to zarządzany i intuicyjny parser e-maili, który pozwoli Ci zaoszczędzić dziesiątki godzin pracy potrzebnych na stworzenie własnego rozwiązania od zera. Przejrzyj szczegółowy opis funkcji Parseur.

1. Pozyskaj e-maile

Obecnie wiadomości trafiają do indywidualnych skrzynek pracowników, na wspólne listy czy do firmowej skrzynki odbiorczej.

Pierwszym krokiem jest konfiguracja konta e-mail, które scentralizuje obsługę tych skrzynek. Ewentualnie, jeśli masz odpowiednią wiedzę, możesz uruchomić własny serwer pocztowy, czyli tzw. serwer SMTP.

Jeśli decydujesz się na obsługę własnego serwera, poniżej znajdziesz kilku popularnych dostawców SMTP:

  • Exim — darmowy, open-source agent transferu poczty, czyli serwer e-mail. To obecnie najpopularniejszy serwer SMTP, zyskujący przewagę nad drugim — Postfix.
  • Postfix — również open-source’owy i ceniony za swoją niezawodność oraz prostotę konfiguracji. Zgodnie z badaniem udziału w rynku serwerów mailowych, Exim i Postfix obsługują łącznie 80% wszystkich serwerów.
  • W świecie Microsoft króluje Exchange, z którego można korzystać za pośrednictwem EWS, zamiast starszych protokołów POP3 bądź IMAP. Microsoft umożliwia także hostowanie Exchange w chmurze.
  • Możesz też zbudować własną infrastrukturę od podstaw. To zaawansowana droga, ale zyskujesz pełną kontrolę. Jeśli zdecydujesz się na taki krok, Python oferuje prosty moduł: smtpd.

Wysyłka dużej ilości e-maili bez ryzyka trafienia na czarne listy to osobne zagadnienie — w tej dziedzinie zdecydowanie warto korzystać z gotowych rozwiązań.

Warto również podkreślić, że własne serwery pocztowe odchodzą powoli do lamusa. W dobie chmury i SaaS korzystanie z dedykowanych usług e-mail jest znacznie wygodniejsze. Do najważniejszych dostawców należą:

  • Postmark — koncentruje się na wysokiej dostarczalności i niezawodności, oferuje również darmowe plany.
  • Mandrill — był pionierem w branży, obecnie wciąż popularny, szczególnie jako narzędzie do e-maili marketingowych i transakcyjnych.
  • Sendgrid — także dedykowany obsłudze wiadomości marketingowych oraz transakcyjnych.
  • Mailgun — cenią go przede wszystkim deweloperzy za bogate API i darmowy pakiet startowy.

W Parseur polecamy Postmarka — ich API jest nowoczesne, a dokumentacja rozbudowana. Dostępne są SDK do wszystkich popularnych języków.

2. Przekonwertuj e-mail do przyjaznego formatu danych

E-mail to bardzo stary standard — tak stary jak „Gwiezdne Wojny”! Z biegiem dekad dorobił się licznych pułapek. Przykładowo obsługa znaków międzynarodowych nie była częścią początkowej specyfikacji. Aby obsłużyć znaki specjalne, jak €, trzeba uwzględnić trzy istotne RFC:

  • RFC 2047 — wprowadza wsparcie dla międzynarodowych nazw i tematów w nagłówkach.
  • RFC 5890 — pozwala na międzynarodowe nazwy domen w DNS.
  • RFC 6532 — umożliwia stosowanie UTF-8 w nagłówkach e-maili.

Usługi takie jak Postmark czy Mailgun mogą rozwiązać ten problem, wykonując potrzebne konwersje za Ciebie. Dzięki nim nie musisz się obawiać kłopotów z kodowaniem znaków, MIME czy cp1252.

Przykładowo, korzystając z Mailgun, e-mail zostanie odebrany i przekształcony w wygodny do przetwarzania JSON, obsługujący wszystkie kluczowe RFC. Następnie zostanie przesłany do Twojego serwera jako webhook, w jednym żądaniu HTTP POST.

Dla chętnych: tutaj znajdziesz pełną listę RFC powiązanych z SMTP.

Przykład prostego e-maila odbieranego przez Mailgun, który dociera na Twój serwer w formie:

{
  "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" }
  ]
  /*... inne ciekawe dane tutaj (przeczytaj dokumentację, Luke) ...*/
}

Wygląda przyjaźnie? Porównaj to z tradycyjnym formatem e-maila:

  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 [... cały załącznik tutaj ...] RK5CYII=
  ==mixed
  Content-Type: image/jpg; name="capuccino.jpg"
  Content-Disposition: attachment; filename="capuccino.jpg"
  Content-Transfer-Encoding: base64
  G+aHAAAA [... kolejny załącznik tutaj ...] ORK5CYII=
  ==mixed==

Na szczęście większość popularnych języków programowania oferuje biblioteki do czytania i rozkodowywania wiadomości e-mail — np. email dla Pythona czy RubyMail dla Ruby.

3. Zapisz dane do bazy danych

Na tym etapie możesz wykorzystać swoje umiejętności programistyczne do obsługi żądań HTTP i przekładania ich na rekordy w wybranej bazie danych.

Spośród popularnych języków i frameworków, które mogą być pomocne, wymienić warto:

Kod jest prosty, chyba że masz niestandardowe wymagania dotyczące formatu. Zawsze zweryfikuj, czy Twój system biznesowy nie wymaga specyficznego układu danych, do którego powinieneś dokonać konwersji (np. CSV albo JSON, a niekiedy nawet archaicznych formatów binarnych).

Jeżeli chcesz wyłącznie przechowywać dane (np. do wewnętrznej aplikacji), wybierz bazę danych odpowiednią do sposobu późniejszego wykorzystania.

Jeśli na pewno nie zamierzasz wykonywać raportów ani zaawansowanych zapytań nie-sekwencyjnych na e-mailach, możesz rozważyć MongoDB, choć należy się nad tym mocno zastanowić (warto przeczytać ten artykuł o MongoDB).

Dla większości zastosowań relacyjna baza danych oparta na SQL będzie wystarczająca. Wystarczy zdefiniować dwie tabele: jedną dla e-maili, drugą dla załączników (o ile je przechowujesz).

Do najpopularniejszych silników SQL należą:

  • MySQL oraz zalecany przez społeczność, choć nieoficjalny MariaDB — proste i używane w milionach wdrożeń, choć po przejęciu przez Oracle wsparcie nie jest już takie jak kiedyś.
  • Postgresql — bardziej rozbudowany, stabilny oraz skalowalny niż MySQL, choć wymaga również większych umiejętności konfiguracyjnych.
  • Wśród płatnych rozwiązań: Oracle — system klasy korporacyjnej, bardzo wydajny, rozbudowany i (co za tym idzie) kosztowny.
  • Microsoft SQL Server — obecnie realna alternatywa dla największych, ciągle dynamicznie rozwijany.

Na tym etapie Twój parser e-maili jest gotowy do zapisywania wiadomości w bazie danych.

Ale dlaczego poprzestawać tylko na tym? Teraz masz dostęp do ogromu istotnych informacji — twoje e-maile to źródło kluczowych danych biznesowych: faktury, koszty, oferty, leady czy klienci.

Możesz pójść o krok dalej i wydobyć z tych maili najważniejsze dane. Taka automatyzacja usprawni Twój workflow i pozwoli zaoszczędzić czas.

4. Ekstrakcja kluczowych danych z treści e-maili

To jest moment, kiedy następuje właściwe parsowanie. W idealnym świecie powinno to wyglądać tak:

A screen capture of email parser overview
Schemat parsera e-maili, przekształcającego otrzymaną wiadomość w ustrukturyzowane dane (np. arkusz kalkulacyjny lub bazę danych)

Oto kilka strategii na rozwiązanie tego zadania:

Analiza statystyczna tekstu (liczenie słów)

Metoda ta sprawdza się szczególnie przy e-mailach pisanych ręcznie, które nie mają ustalonego schematu. Tworzysz kategorie wiadomości oraz listy słów kluczowych dla każdej z nich. Parsując maila, zliczasz wystąpienia poszczególnych wyrazów, dzięki czemu automatycznie rozpoznajesz typ wiadomości.

To technika przydatna np. do analizy nastrojów. Możesz zdefiniować kategorie „zadowolony klient” i „niezadowolony klient”, a następnie kierować maile we wskazane miejsca. Oczywiście — komunikacja ludzka jest pełna niuansów i dwuznaczności, więc do pełnej automatyzacji jeszcze daleko.

Wyrażenia regularne

Najlepsza metoda do automatycznie generowanych, powtarzalnych e-maili, np. potwierdzeń rezerwacji lub zamówień.

Załóżmy, że musisz przeanalizować milion wiadomości z American Airlines i wydobyć nazwisko pasażera. Tworzysz wyrażenie regularne dopasowujące strukturę e-maila i wyłapujące pożądany fragment. Proste, dopóki struktura się nie zmieni, np. wiadomość będzie zawierała więcej pasażerów. Wtedy reguła przestaje działać...

Python oferuje bardzo dobrą implementację wyrażeń regularnych, podobnie jest w Rubym oraz JavaScript.

Minusem wyrażeń regularnych jest ich złożoność i trudność w późniejszej modyfikacji. Wielu użytkowników Parseur przyznało, że budowali parsery na regułach regex, ale nie byli w stanie obsłużyć nieskończonej liczby zmian w strukturze e-maili przychodzących.

5. Potrzebujesz gotowego rozwiązania? Parseur jest odpowiedzią!

Czy nie byłoby wygodnie po prostu otrzymywać kluczowe dane w idealnie uporządkowanym Excelu lub bazie danych?

Taki jest właśnie cel Parseur. Udostępniamy prosty interfejs typu "wskaż i kliknij" — zaznaczasz interesujące Cię dane, a następnie każda podobna wiadomość trafia automatycznie do wybranego arkusza lub bazy. Żadnego ręcznego kodowania, tylko szybka konfiguracja szablonu.

Nie musisz budować parsera e-maili od zera, by zautomatyzować przetwarzanie wiadomości. Każdy e-mail staje się automatycznie pojedynczym wierszem Excela.

6. Zintegruj parser z Twoimi aplikacjami biznesowymi

Po ekstrakcji dane wystarczy już tylko przesłać tam, gdzie są najbardziej potrzebne, np. do CRM czy systemu ERP.

Wsparcie zapewniają narzędzia, takie jak Zapier czy Make, dzięki którym łatwo połączysz parser e-maili z aplikacjami firmy. Wystarczy tylko przygotować odpowiedni konektor, by następnie korzystać z setek połączeń oferowanych przez te platformy.

Parseur integruje się z Google Sheets, Zapier, Integromat oraz Microsoft Power Automate, co pozwala na połączenie z tysiącami aplikacji w kilka kliknięć.

Powodzenia!

Ostatnia aktualizacja

Oprogramowanie do ekstrakcji danych opartych na AI.
Zacznij korzystać z Parseur już dziś.

Automatyzuj wyodrębnianie tekstu z e-maili, PDF-ów i arkuszy kalkulacyjnych.
Oszczędzaj setki godzin ręcznej pracy.
Postaw na automatyzację pracy z AI.

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