WebNews.cz - počítače, komunikace, mobily, internet, finance

Mapa serveru | Administrace

Odeslání libovolného formuláře e-mailem (3.)

Michal Terč - Profil - 31.08.2001
Pokud chcete posílat údaje z formuláře na webu v přehledném e-mailu ve formátu HTML, tak si přečtěte dnešní pokračování seriálu.

V minulých dílech seriálu jsme si vytvořili skript pro odesílání libovolného formuláře e-mailem. E-mail byl ale odesílán v obyčejném textovém formátu, což u rozsáhlejších formulářů zhoršovalo čitelnost e-mailu. Proto dnes skript rozšíříme o možnost odeslání ve formátu HTML. Použijeme k tomu include, který vytváří v PHP třídu sloužící pro vytvoření HTML e-mailu a jeho odeslání (zdroj: http://www.zend.com).

Do skriptu byl doplněn následující nepovinný parametr:
$html ... Y/N - odeslat ve formátu HTML

Vlastní část skriptu pro odeslání formuláře e-mailem ve formátu HTML bude vypadat následovně:

if ($html == "Y") {
// pokud má být mail odeslán ve formátu HTML
$telo = "<table width=\"100%\">";
$telo .= "<tr><td><font color=\"Red\"><b>Email:</b></font></td><td>&nbsp;</td><td>$email</td></tr>";
reset($HTTP_POST_VARS);

while (list($promenna, $hodnota) = each($HTTP_POST_VARS)) {
// nahradíme konce řádků tagem <br>
$hodnota = str_replace(chr(13) . chr(10), "<br>", $hodnota);
$hodnota = str_replace(chr(10) . chr(13), "<br>", $hodnota);
$hodnota = str_replace(chr(13), "<br>", $hodnota);
$hodnota = str_replace(chr(10), "<br>", $hodnota);


// pokud parametr začíná na # nebo *, tak zapsat hodnotu do textu mailu
if (((substr($promenna, 0, 1) == "@") || (substr($promenna, 0, 1) == "#")) && ($hodnota != ""))
{ $telo .= "<tr><td valign=\"top\"><b>".substr($promenna, 1).":</b></td><td>&nbsp;</td><td>$hodnota</td></tr>"; }
}

$telo .= "</table>";
$telo .= "<p><hr></p>";
$telo .= "<p><b>Uživatelův browser:</b> $HTTP_USER_AGENT<br>";
$telo .= "<b>IP adresa, ze které přišel požadavek:</b> $REMOTE_ADDR</p>";

// odešleme mail ve formátu HTML
$mail = new html_mime_mail("X-Mailer: Html Mime Mail Class");
$mail->add_html(ToISO($telo), "");
$mail->set_charset('iso-8859-2', TRUE);
$mail->build_message();
$mail->send($komu, $komu, $email, $email, ToISO($predmet));
$sendok = true;

// odeslat potvrzení
usleep(500);
$mail->send($email, $email, $email, $email, ToISO("Potvrzení - vyplnění formuláře"));
} else {
// pokud má být mail odeslán ve formátu prostého textu
..
...
}

Jako příklad pro předvedení byl použit kontaktní formulář, který je možno použít pro firemní stránky. Na výsledek našeho snažení se můžete podívat zde.


Kompletní zdrojové soubory příkladu - sendform.zip (4 kB)
Základní include využité v příkladu - inc.zip (7 kB)
Definice třídy pro odeslání HTML e-mailu - html_email_class_927a.zip (11 kB)

Tisk článku - Poslat článek - (5135 zobrazení)
Redakce | | | ISSN 1213-9335 | © 2005 Developed by terc.cz