Umíme ve Flashi – 5. díl – odesílání e-mailů

Určitě časem dospějeme do situace, kdy budeme chtít uživateli našich aplikací nabídnout formulář pro odesílání e-mailových zpráv. V dnešním díle si ukážeme dva způsoby odesílání e-mailů.

E-maily, jak na ně?

Pro odesílání e-mailů existují přinejmenším dva způsoby. Oba si dnes vyzkoušíme. První, velmi známý příkaz známe jistě z HTML stránek. Jedná se o „mailto:“, který umožňuje odesílání pomocí e-mailového klienta.

Uvedený příkaz je nejjednodušší, nemusíme se starat o další skriptování na straně serveru. O všechno se postará náš e-mailový klient. Jediné, co mu musíme říct, je informace na jakou adresu se má zpráva poslat, s jakým textem a případně můžeme připojit předmět zprávy.

Pro nás to znamená, že si ve Flashi musíme vytvořit několik vstupních textových polí a pak přidáme tlačítko pro provedení odeslání e-mailu. Na tlačítko umístíme funkci getURL():

getURL("mailto:"+email+"?subject="+mail_predmet+"&body="+mail_zprava);

Proměnná e-mail určuje cílovou adresu, dále zde máme dvě proměnné pro zobrazení předmětu zprávy a samotné zprávy. Pokud uvedený skript otestujeme, po stisknutí tlačítka dojde k otevření okna e-mailového klienta a budeme mít vyplněná všechna potřebná políčka e-mailové zprávy.

Odesílání pomocí PHP skriptu

Výše uvedený způsob je jistě pohodlný, nemusíme se starat o další skripty, které by nám na straně serveru pomohly s odesíláním zprávy. Ovšem pokud chceme uživatelům nabídnout větší komfort při odesílání zpráv a nenutit je používat e-mailového klienta, musíme sáhnout po trochu složitějším řešení. Tím je odesílání e-mailů pomocí skriptu na straně serveru. Může se jednat o ASP, PHP … možností je mnoho, ale my si ukážeme řešení pomocí PHP.

Postup bude obdobný jako v předchozím případě, tedy pokud se budeme nejdříve zabývat aplikací na straně Flashe. Na scéně si vytvoříme několik textových polí pro vložení jména odesílatele, adresy odesílatele, předmětu zprávy a textu zprávy. Textová pole označíme jako vstupní (Input) a pojmenujeme jejich instance. Vytvoříme si na scéně tlačítko, kterému přiřadíme tento skript:

on (release) {
 mail_predmet = tema.text;
 mail_zprava = zprava.text;
 mail_jmeno = jmeno.text;
 mail_email = email.text;
 loadVariables("mail.php", this, "POST");
}

V uvedeném příkazu si uložíme obsahy polí do pomocných proměnných. Následuje provedení a načtení php skriptu. PHP stránka, na kterou se odkazujeme, provede samotné odeslání e-mailu. Ovšem, aby mohla e-mail odeslat, musí dostat informace o tom, jaká data a kam je má zaslat. K tomu nám poslouží právě pomocné proměnné, které si naplníme při stisknutí tlačítka. Tyto proměnné v sobě uchovávají informace, které si přebere příslušný PHP skript, který jsme použili.

Abychom ale věděli, jestli došlo k úspěšnému odeslání, musíme mít zpětnou vazbu. Té jsme docílili pomocí funkce loadVariables(), která načte data vypsaná PHP skriptem. Tímto se dozvíme, jestli došlo k úspěšnému či neúspěšnému odeslání e-mailu.

PHP skript

Nyní se podíváme, jak vypadá skript pro odesílání e-mailů:

<?
$to = "
vas_email@vas_server.cz";
$subject = stripslashes($HTTP_POST_VARS[`mail_predmet`]);
$message = $HTTP_POST_VARS[`mail_zprava`] ;
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-type: text/plain; charset=UTF-8\r\n";
$header .= "From: ". $HTTP_POST_VARS[`mail_jmeno`] ."<". $HTTP_POST_VARS[`mail_email`] . ">\r\n";
if(@mail($to, $subject, $message, $header))
 {
  echo "output=sent";
 } else {
  echo "output=error";
 }
?>

Je to velmi jednoduchý skript, který ale dobře poslouží našim účelům. Ve skriptu si všimneme první části, kde vkládáme do proměnných hodnoty z flashového souboru. Výraz: $HTTP_POST_VARS[`mail_predmet`] znamená převzetí hodnoty proměnné „mail_predmet“, kterou jsme pomocí metody POST odeslali z flashové animace. Jak je vidno, uvedeným způsobem můžeme snadno komunikovat mezi flashem a jinými asp stránkami na straně serveru.

Samotný příkaz pro odeslání e-mailu je velmi jednoduchý: mail($to, $subject, $message, $header). Názvy proměnných dávají tušit, co která část znamená. My se jenom pozastavíme nad zněním proměnné „header“, která, kromě jiného, určuje kódování zprávy.

Dalším krokem je zjištění stavu odeslání zprávy. K tomuto účelu máme v PHP skriptu podmínku, která zjišťuje stav odeslání. Pokud je vše v pořádku, vypíše se hodnota proměnné „output“ na „sent“. Pokud nastala chyba, proměnná „output“ se změní na hodnotu „error“. Abychom mohli zjistit, co se s e-mailem stalo, připíšeme na akci tlačítka následující kód:

this.onData = function() {
  trace(output);
 };

Protože jsme ve funkci loadVariables parametrem „this“ určili, že veškeré proměnné, které nám PHP skript poskytne, načteme na hlavní scénu, je zřejmé, že proměnná „output“ bude také na hlavní scéně. Po vyhodnocení načtení dat událostí onData() tak zjistíme hodnotu proměnné „output“. Pokud jsme v prostředí Flashe, necháme si hodnotu proměnné vypsat. Jinak bychom mohli dále testovat její hodnotu a reagovat tak úspěšné či neúspěšné odeslání zprávy.

Zdrojové soubory dnešní k dispozici zde.

Témata článku: Software, Programování, Hlavní pole, Textové pole, Uvedený způsob, Díl, Error, E-mailový klient, Message

Určitě si přečtěte

Velká podzimní aktualizace Windows 10 je tady: Co přináší Fall Creators Update

Velká podzimní aktualizace Windows 10 je tady: Co přináší Fall Creators Update

** Po půl roce je tu další aktualizace Windows ** A opět přináší hlavně hromadu drobných kosmetických vylepšení ** Podívali jsme se na ty nejzajímavější

17.  10.  2017 | Jakub Čížek | 176

Budoucností Windows 10 je Fluent Design. Takto bude jednou vypadat celý systém

Budoucností Windows 10 je Fluent Design. Takto bude jednou vypadat celý systém

** Fluent Design je vzhled, do kterého postupně Microsoft převleče celý systém ** Staví na průhlednosti a velkých plochách ** Do Windows 10 se z části dostane už zítra při vydání podzimní aktualizace

16.  10.  2017 | Stanislav Janů | 154

Nejlepší optické iluze: Z toho vám půjde hlava kolem

Nejlepší optické iluze: Z toho vám půjde hlava kolem

** Mozek se nechá snadno ošálit, a to mnoha způsoby ** Podívejte se na několik nejlepších optických iluzí ** Iluze dokazují, že vnímání reality může být značně zkreslené

16.  10.  2017 | Vojtěch Malý


Aktuální číslo časopisu Computer

Nový seriál o programování elektroniky

Otestovali jsme 17 bezdrátových sluchátek

Jak na nákup vánočních dárků ze zahraničí

4 tankové tiskárny v přímém souboji