Hlavní menu

Nástroje

SlovnikTerminologie / EmailoveNotifikace

View (print) - Edit page | Recent changes - Page history

Updated 04 February 2014, 20:45 by MartinKozisek

Emailové notifikace

Chceme-li na nějakou akci navázat zasílání emailu uživateli, je potřeba provést několik kroků, které jsou zde popsány. V podstatě vše je již naprogramováno, takže se nejedná o náročnou proceduru.

Text zprávy

Text a předmět emailu se nachází v lokalizačních souborech (messages_cs.properties, messages_en.properties). Klíč má tvar mail.něco. Je vhodné podívat se, v jakém tvaru jsou ostatní maily, a toho se držet. Vytváříme-li template (chceme-li do textu následně vložit nějaké argumenty), vložíme do textu na toto místo {číslo_argumentu}.

Zpřístupnění lokalizačních textů v controlleru.

Controller, který využívá lokalizační texty, potřebuje mít injektovánu beanu MessageSource?.

V souboru spot-servlet.xml proto musí být u daného controlleru nastavena property:

  • <property name="messageSource" ref="messageSource" />

V samotném controlleru poté musí být nadeklarována proměnná MessageSource? a musí k ní být setter.

Nastavení jazyka zprávy

Zjištění jazyka (který je používán daným uživatelem) se provede voláním metody třídy CookieUtils?:

  • Locale locale = new Locale(CookieUtils?.getLanguage(request));

Sestavení zprávy

Mají-li se do textu zprávy vložit argumenty (viz Text zprávy), je nutné vytvořit pole (indexy prvků pole odpovídají číslům v templatu):

  • Object[] params = {login, password};

Voláním metody getMessage() se získá lokalizovaný text - parametry jsou klíč, pole s agrumenty zprávy, locale objekt získaný v předchozím bodě:

  • String emailText = messageSource.getMessage("mail.hello", params, locale);

Odeslání emailu

Pro posílání mailů se používá beana mailApi a proto je opět nutné nastavit property v souboru spot-servlet.xml:

  • <property name="mailAPI" ref="mailAPI" />

A následně nadeklarovat proměnnou i se setter funkcí v daném cotnrolleru.

Máme-li řetězce s emailem příjemce, předmětem zprávy a textem zprávy, provede se odeslání mailu voláním metody sendEmail():

  • mailAPI.sendMail(userEmail, emailSubject, emailText);