Archiv pro štítek: vývoj

Ubuntu: Odesílání emailů na localhostu

Ve své podstatě tento článek volně navazuje na můj předchozí text, kde jsem prozradil, jak během vývoje webové aplikace pohodlně přijímat emaily za účelem testování správného chování. Ovšem k tomu, abychom si mohli zprávu přečíst, musí být nejprve odeslána. Velmi jednoduše lze tohoto cíle dosáhnout v Ubuntu po kontaktování služby Gmail. K doručení emailu se použijí servery Google, a to i na localhostu.

Nejprve je nutno nainstalovat pomůcku jménem sSMTP. K tomu slouží tento příkaz:

sudo apt-get install ssmtp

Nyní následuje nezbytné nastavení. Ve svém oblíbeném editoru zobrazte obsah souboru /etc/ssmtp/ssmtp.conf. K uložení změn však pravděpodobně budete potřebovat rootovská práva. Dozajista se proto bude hodit následující:

gksudo gedit /etc/ssmtp/ssmtp.conf

S právy roota dojde k otevření požadovaného umístění v GUI editoru.

Konfigurační soubor obsahuje komentáře, které začínají mřížkou (#). Tyto řádky můžete ignorovat. Cílem je dosáhnout následujícího stavu:

root=jmeno.prijmeni@gmail.com
mailhub=smtp.gmail.com:587
rewriteDomain=
hostname=jmeno.prijmeni@gmail.com
UseSTARTTLS=YES
FromLineOverride=YES
AuthUser=jmeno.prijmeni
AuthPass=nejakeTajneHesloKtereNikdoNevi

Ne všechny konfigurační parametry jsou přítomny, a proto se neostýchejte je do souboru připsat.V mém případě šlo o UseSTARTTLS, AuthUser a AuthPass. Když v uvedeném příkladu uvádím jmeno.prijmeni@gmail.com, mám tím na mysli email, který ve službě Gmail používáte. Část jmeno.prijmeni tedy zaměňte za své uživatelské jméno.

Blížíme se do finále, tu náročnější část již máme za sebou. Pro editaci /etc/ssmtprevaliases zadejte:

gksudo gedit /etc/ssmtp/revaliases

Konfigurace vypadá takto:

root:jmeno.prijmeni@gmail.com:smtp.gmail.com:587
uzivatelskeJmeno:jmeno.prijmeni@gmail.com:smtp.gmail.com:587

Je nutno každému linuxovému uživateli jednotlivě povolit používání sSMTP. Vyznačenou část uzivatelskeJmeno tedy nahraďte loginem, kterým se do Ubuntu přihlašujete. Pokud jej neznáte, použijte příkaz who, který vám jej ochotně připomene. Vypíše totiž informace o aktuálně přihlášených účtech. Uživatelské jméno se poté nachází v pomyslné tabulce hned na prvním místě. V mém případě (viz screenshot) se jedná o login ubuntu.

Příkaz who

K otestování správného nastavení poslouží tento příkaz:

sudo ssmtp prijemce@domena.tld

Po napsání své zprávy v terminálu stiskněte Enter a poté CTRL + D. Dojde k odeslání emailu nebo vypsání chybových hlášek.

Dva tipy jak při vývoji pohodlně testovat emaily

EmailMožná to také znáte. Programujete webovou aplikaci a potřebujete otestovat širokou škálu emailových zpráv, které se odesílají po vykonání nejrůznějších akcí, a to z pohledu několika uživatelských rolí. Přináším proto dva užitečné tipy, jak uvedenou činnost co nejvíce zjednodušit. Díky nim se totiž vyhnete nutnosti vytvořit emailovou schránku ještě před odesláním dané zprávy.

Mailinator

První službu jsem již na tomto webu zmiňoval. Mailinator automaticky přivede k životu danou schránku a do ní zprávu doručí. S klidným svědomím jednoduše pošlete email na naprosto-cokoliv@mailinator.com, a poté ho zobrazíte na adrese naprosto-cokoliv.mailinator.com. Donedávna mi vadil ne příliš spolehlivý způsob zobrazování emailů v HTML. Mailinator však nedávno prošel faceliftem, který kromě obměny vzhledu přinesl ajaxové načítání obsahu schránky a hlavně podporu HTML zpráv. Vše funguje bez nutnosti předchozí registrace.

Gmail

K testovacím účelům lze překvapivě použít i Gmail, konkrétně jeden účet s jedinou emailovou adresou. Webová aplikace však u uživatelských účtů vyžaduje rozdílné emaily. Jak na to? Stačí používat tečky. Pokud se do webového rozhraní služby Gmail přihlašujete pomocí účtu jmeno.prijmeni@gmail.com, můžete jako svůj email uvádět jmenoprijmeni@gmail.com, j.m.e.n.o.p.r.i.j.m.e.n.i@gmail.com nebo jme.no.prij.meni@gmail.com. Nevěříte? Skutečně tak tomu je, a tvrdí to i Google, klidně si to vyzkoušejte. Nápověda uvádí tyto konkrétní tři případy, které mluví za vše:

    • homerjsimpson@gmail.com = hom.er.j.sim.ps.on@gmail.com
    • homerjsimpson@gmail.com = HOMERJSIMPSON@gmail.com
    • homerjsimpson@gmail.com = Homer.J.Simpson@gmail.com

Nevýhodou tohoto řešení je však nutnost pamatovat si rozmístění teček pro jednotlivé uživatelské účty. Pokud vsadíte na Mailinator, vyhnete se uvedenému problému díky adresám typu administrator@mailinator.com, zakaznik@mailinator.com nebo dodavatel@mailinator.com.