Za posledné roky vzniklo niekoľko služieb, ktoré poskytujú jednoduché používateľské rozhranie pre prácu so zoznamom emailov, vytváranie kampaní, grafické úpravy na úrovni wysiwyg editoru, štatistické informácie a iné funkcie uľahčujúce prácu.

Ako nadstavba nad niektorými týmito službami vzniklo API, ktoré dovoľuje spúšťať cloudové funkcie priamo z kódu, pracovať s vlastnou databázou údajov, ale pri tom plne využívať pripravené funkcie externých služieb. Práve využívanie cloudových služieb je v posledných rokoch veľmi obľúbené. V tomto blogu sa budem venovať práve možnostiam využitia API nad jednou z týchto služieb.

Odosielanie emailov v minulosti a dnes

S častejším využívaním objektového programovania v PHP sa obľúbenou stala knižnica PHPMailer, ktorá v sebe zaobaľovala oveľa viac funkcionalít a možností na škálovateľnosť emailov. Bolo možné určovať adresu odosielateľa, príjemcu, kópie pre ďalších príjemcov, formátovať text ako HTML, pripájať prílohy, a pod. Pre bežné odosielanie emailov plne postačujúce a dodnes stále využívané. Ale …
S presunom od prezentačných webových stránok ku obsiahlejším korporátnym webom, e-shopom, portálom a webovým aplikáciám, vzišli aj nové požiadavky na zasielanie newsletterov. V princípe sa síce stále jedná o emaily, no je potrebné sa zamýšľať aj nad novými faktormi, ktoré sa pôvodne vôbec do úvahy nebrali. Čo je teda nové?

1. Rôzne grafické šablóny pre rôzne typy emailov

Každý email zo stránky by mal mať svoju formu a aspoň základnú grafickú úpravu. Pre tento účel nám najlepšie poslúžia šablóny, ktoré je možné štýlovať pre konkrétne potreby. Grafické prvky je potrebné uložiť na verejne dostupný server, aby ich emailový klient dokázal prečítať.

2. Zbieranie emailov a ich monitorovanie

Najmä pri zbieraní emailov (napr. z newsletter formuláru) do databázy je potrebné s nimi dokázať ďalej pracovať. Od základnej funkcionality zobrazenia zoznamu emailov, cez ich exportovanie do xls/csv, možnosť odhlásenia sa z newslettra až po monitorovanie emailov vrátane počtu otvorení, odklikov a pod.

3. Nárazové odosielanie stoviek až tisícov emailov

Odosielanie emailov cez SMTP protokol dokáže vo vyšších počtoch vyťažiť server a následne spôsobiť spomalenie behu stránky. Doba spracovania serverom sa môže pohybovať v desiatkach sekúnd. V prípade výpadkov SMTP servera na hostingu nastáva ďalší problém. Nemáme informáciu o tom, ktoré správy boli odoslané a ktoré nie. Osobitný bod je aj zaradenie do black listov za „spamovanie“.

Možnosť ako zasielať hromadné správy je dávkové spúšťanie cez CRON v nočných hodinách. Vo väčšej miere síce obmedzíme spomalenie stránky v časoch najvyššieho vyťaženia, no nevyrieši to problém s výpadkami a štatistikami o prípadných kampaniach. Túto funkcionalitu nám sprístupňujú verejne dostupné služby.

MailChimp

Jedna z najobľúbenejších služieb na odosielanie newslettrov je MailChimp. Používa ju cez 7 miliónov ľudí a každý deň odošle 500 miliónov emailov. Je teda vyladená a prispôsobená pre user-friendly používanie.

Medzi najväčšie výhody patrí monitorovanie kampaní, automatické odosielanie emailov vo zvolenom čase bez záťaže serveru, kde beží samotná stránka, pokročilé analytické funkcie ako sledovanie odklikov, vytváranie templatov pre emaily, a pod. Výhodám MailChimpu sme sa už venovali v našom článku „Ako vylepšiť váš newsletter alebo 8 výhod MailChimpu“.

Nie vždy nám však postačuje využiť exportovaný zoznam emailov importovaný do Mailchimpu. Čo keď chceme zaslať newsletter len osobám registrovaným za posledný rok? Len osobám z konkrétneho mesta? Alebo presnej vekovej skupine? Vtedy je vhodné implementovať existujúce funkcie do kódu a prispôsobiť si tak ich funkcionalitu podľa potrieb. A tu prichádza do hry využitie API.

Využitie API na odosielanie emailov

Práve pre potreby väčšej kontroly nad odosielaním emailov a najmä odosielanie newsletterov priamo zo stránky vznikli služby, ktoré cez API dokážu vyriešiť väčšinu vyššie spomínaných problémov. S využitím externej služby získavame, napríklad, minimálnu záťaž na stránku a server, keďže odosielanie sa uskutočňuje na inom serveri a odosielanie nemusí byť tým pádom vykonávané v intervaloch, napríklad cez cron. Externá služba sa stará aj o manažovanie fronty úkonov na spracovanie, tzv. job queue.

Pri výpadku servera je fronta uložená do nevykonaných jobov a v určenom časovom intervale sa pokúsi nevykonanú frontu odoslať znova. Aj vzhľadom na bezpečnosť máme viac možností, ako napr. zabezpečenie cez public/private kľúč a zasielanie mailov cez ssh protokol, black list prevention, DomainKeys Identified Mail (DKIM), Sender Policy Framework (SPF), atď. Pokročilý monitoring emailov na stránke služby s využitím ich user friendly rozhrania je užitočný najmä pre klienta, ktorý má online prístup ku štatistikám.

Databáza emailov, s ktorou pracujeme je v tomto prípade stále uložená u nás a dokážeme podľa potreby filtrovať skupiny používateľov a zasielať tak emaily efektívnejšie pre konkrétne cieľové skupiny.

Týmito službami získame nielen vyladené funkcie, ktoré nie je potrebné vyvíjať nanovo, ale aj nezávislosť na nastaveniach servera, aplikácie a lepšie rozloženie záťaže.

Mandrill

Po niekoľkých pokusoch a testovaniach cloudových emailových služieb mi najviac zapasoval práve Mandrill, ktorý splnil presne to, čo som od cloudovej emailovej služby očakával.

  • Jednoduchá implementácia,
  • prehľadný a komplexný dashboard s informáciami prakticky realtime,

Maindrill - ilustračný obrázok

 

Maindrill - ilustračný obrázok

  • vytváranie vlastných reportov,
  • jednoduché vytváranie templatov a zasielanie len dát, ale aj možnosť použiť vlastný template a zasielať kompletné html,

Maindrill - ilustračný obrázok

  • automatická autentifikácia + možnosť doplnenia SPF a DKIM,
  • prepojenie viacerých domén na jeden účet,
  • kvalitná mobilná aplikácia s reportmi,
  • vytváranie podúčtov a možnosť nastaviť sledovanie (podobne ako Google Analytics),
  • platobné podmienky ako pri MailChimpe – Mandrill je pod MailChimpom,
  • jednoduché prepojenie účtu Mailchimpu a Mandrillu a možnosť použiť kampane, templaty a pod. z Mailchimpu v Mandrille,
  • dobrá dokumentácia + integrácia,
  • materiály na internete.

Okrem Mandrillu, nájdete na internete aj ďalšie alternatívne služby ako sú:

Swiftmailer,
Mailgun
Iron – queue service,
Beanstalk – queue service.

Rýchlosť

Na začiatku článku som spomínal, že jeden z problémov, na ktorý narazíme pri hromadnom odosielaní emailov je rýchlosť a celkovo výkon (performance), ktorý potrebujeme na spracovanie požiadaviek.

Štandardné odosielanie požiadavky cez vlastný hosting

V prípade, že odosielame len jeden email (registrácia, stratené heslo a pod.) a nemáme 5-ciferné návštevnosti, nie je problém odosielať emaily aj týmto spôsobom. Rýchlosť odoslania správy závisí od rýchlosti komunikácie a spracovania požiadavky. Ak neberieme do úvahy nadmerné veľkosti emailu (prílohy, obrázky) tak doba spracovania požiadavky sa pohybuje v desatinách sekundy/email bez teoretických výpadkov smtp servera. Pre jednoduchosť simulácie počítajme s cca 0,2 sekundy/email.

Ale, ak potrebujeme poslať 100 emailov, čas spracovania požiadavky je 20 sekúnd. V tomto prípade je ideálna varianta cron a dávkové spúšťanie odosielania po skupinách.

Odosielanie cez cloud službu

V prípade, že emaily odosielame cez externú službu, čas požiadavky na spracovanie sa skracuje na čas, za ktorý sa cez API zapíše požiadavka. Pokiaľ by sme brali do úvahy podmienky ako aj pri prvej variante, tak sa čas na našom hostingu skracuje na cca 1/10 oproti klasickému odosielaniu cez smtp. T.j. odoslanie 100 emailov sa na našom serveri spracuje za cca 2 sekundy.

Odosielanie cez cloud službu asynchrónne

Urýchliť spracovanie požiadavky na našej strane je ešte možné asynchrónnym spracovaním požiadavky cez jobqueue / message queueing. Buď je možné využiť externé služby ako iron s nespočetnými možnoťami na použitie, alebo požiadavky spracovať lokálne s tým, že všetky sa zapíšu do lokálnej databázy len ako požiadavky na spracovanie a externý server ich podľa vyťaženia preberá z databázy a postupne vykonáva.

Záver

Ideálne a ani univerzálne riešenie pre hromadné rozosielanie newsletterových emailov neexistuje a vždy treba brať do úvahy všetky faktory vyplývajúce z projektu. Technológie sa ale aj v tomto smere posúvajú vpred a bola by škoda nevyužívať to, čo je k dispozícii.

Michal Babic

Michal Babic

Web Developer - fotograf, metalista a ocko malej Stelky 🙂

More Posts

Zdieľať článok