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.

Diskuze (2) Další článek: Mozilla Thunderbird 1.5 RC1 je k dispozici ke stažení

Témata článku: , , , , , , , , , , , ,