Mailgun - profesionální práce s emaily

2 PHP, Tipy & triky

S Mailgunem je odesílání emailů hračka a je to skoro zadarmo. Postará o pozdější doručení v případě neúspěchu, trackuje otevírání zpráv, informuje o nedoručitelných zprávách a umí i emaily přijímat.

Mailgun - profesionální práce s emaily

Mailgun je v některých ohledech velmi podobný MailChimpu, je skvělý pro odesílání hromadných zpráv, počítá počty otevření, kliků, odhlášení z newsletteru a další. MailChimp ale nabízí uživatelské rozhraní, to v Mailgunu není. Odesílání probíhá pouze pomocí API nebo SMTP serveru. Za to ale nabízí další funkcionalitu, a hlavně, do 10 000 odeslaných emailů měsíčně je zdarma!

Nabízené funkce

Odesíláním to nekončí, většina lidí chce vědět, co se s emailem děje nadále, ale ani tím to nekončí. Mailgun dokonce dokáže emaily přijímat. Veškeré funkce jsou popsány na Mailgun.com v sekci Features, v krátkosti i v následujících odstavcích.

Odesílání a maximální snaha o doručení

Emaily lze odesílat po jednom, což se hodí pro různé informační systémy, kde každá zpráva je unikát. Ke zprávě lze připojovat také přílohy až do 25MB. Další možnost je hromadné odesílání, každému příjemci je poté doručen stejný email, ideální pro newslettery.

Poslední možnost je personalizace emailů. Odeslání probíhá opět více příjemcům najednou, do emailu se ale umístí placeholdery, které jsou před odesláním nahrazeny. Lze takto jediným voláním API odeslat mnoho emailů, které se pouze lehce liší v obsahu.

Pokud email nemůže být doručen, protože uživatel má plnou schránku, mail server je dočasně nedostupný, přijal mnoho emailů najednou tak je zahodil apod., Mailgun se bude snažit doručovat email i nadále. Postup se dá sledovat jak přes API, tak v logu přes webové rozhraní.

Mailgun - Logy emailů

Logování a webhooky

Mailgun ukládá jakoukoli reakci do logu, který je přístupný jak přes webové rozhraní, tak přes API. K tomu ale lze nastavit webhooky, neboli URL adresy, na které Mailgun pošle POST požadavek při dané události. Takto může aplikace dostat zpětnou vazbu, pokud uživatel zprávu otevřel, nemohla být doručena, emailová schránka neexistuje, nebo se odhlásil z newsletteru a další.

Přijímání emailů

Pokud aplikace odesílá email, například při reakci na příspěvek, některé služby umožňují reagovat odpovědí na email. I tuto možnost Mailgun nabízí, doručenou zprávu uloží a poté je možné ji přes API stáhnout. A největší výhoda je, že zprávu již rozparsuje do JSON formátu, a například dokáže odstranit citovanou odpověď. Pro programátora je tak mnohem jednodušší tuto zprávu zpracovat.

API a malá ukázka

Mailgun používá REST API, ale pro PHP je napsána knihovna. Navíc ukázky kódů a zprovoznění jsou v dokumentaci napsány pro jazyky Ruby, Python, PHP, Java, C#, Go a cURL, a to dost dobře. Malá ukázka odeslání pomocí knihovny pro PHP.

Položka recipient-variables je určená právě k personalizaci emailů, a předané proměnné se poté nahrazují ve zprávě emailů při odesílání. Položka v:*** může obsahovat libovolné data, které poté API vrací vždy s informacemi o zprávě. Takto lze zjistit dodatečné informace o bez složitého parsování obsahu.

$client = new \Mailgun\Mailgun("key-*********************************");
$domain = "mail.kutac.cz";

$client->sendMessage($domain, [
        'from'    => "Pavel Kutáč<no-reply@gmail.com>",
        'h:Reply-To' => "Pavel Kutáč<reply-to@gmail.com>",
        'subject' => "New comment",
        'to' => 'Barack Obama<barack@whitehouse.com>, Armin van Buuren<armin@buuren.nl>',
        'text' => 'Hi %recipient.name%, ...',
        'html' => 'Hi <strong>%recipient.name%</strong>, ...',
        'recipient-variables' => json_encode([
            'barack@whitehouse.com' => ['name' => 'Barack'],
            'armin@buuren.nl' => ['name' => 'Armin']
        ]),
        'v:articleData' => json_encode(['articleId' => $articleId])
    ], [
        'attachment' => ['link\to\attachment.pdf', 'link\to\attachment.txt']
    ]);

Máte zkušenosti s Mailgunem, nebo jinou podobnou službou? Podělte se o zkušenosti v komentářích

K tomuto článku již není možné přidávat další komentáře

Komentáře

Ahoj, máš nějaké zkušenosti např. se spamem, respektive jestli prochází odeslané maily spam filtry (spf, dkim)? Lze odesílat například i přes vlastní SMTP server (s ověřováním)?

Emaily poslané přes MailGun spamem prochází, protože aby ti MailGun vůbec dovolil odeslat první email, musíš nastavit DNSka podle nich. Co tedy chodí přes ne, problémy nemám.

Přes vlastní SMTP z mailgunu odesílat emaily nelze, můžeš si ale dokoupit vlastní IP, ale jinak ne. Jde to vždy přes jejich servery.