Standardně podporuje PHP odeslání mailu pomocí funkce
mail(). Tato funkce nám ale umožní odeslat e-mail pouze ve
formátu prostého textu. Pokud ale potřebuje pomocí skriptu odeslat
e-mail, ve kterém chceme použít formátování textu příp. vložit
obrázek, tak už nemůžeme použít pouze funkci mail().
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/).
Jako příklad použití si vytvoříme jednoduchý formulář, pomocí
kterého odešleme e-mail. Ve formuláři zadáme e-mailovou adresu a
text e-mailu ve formátu HTML (použití standardních HTML tagů). Do
formuláře přidáme i možnost výběru odeslání e-mailu ve formátu
prostého textu (pokud by nám formát HTML nevyhovoval).
<html><body>
<form name="Form"
action="sendmail.php" method="post">
<input
type="hidden" value="mterc@gpm.web4u.cz"
name="email"> <input type="hidden"
value="GetPaidMoney - mail z formuláře"
name="predmet"> <input type="hidden" value="ok.php"
name="nexturl">
<p><label>Příjemce:</label><br> <input
type="text" name="komu"
size="25"><br></p>
<p><label>Text
mailu:</label><br> <textarea
name="telo" cols="60"
rows="10"></textarea><br></p>
<p><label>Formát
mailu:</label><br> <input
type="radio" name="html" value="N">Prostý
text <input
type="radio" name="html" value="Y"
checked>HTML</p>
<p><input
type="submit" name="submitButtonName" value="Odeslat
mail"></p>
</form>
</body></html>
|
Stránka pro zobrazení výsledku by mohla vypadat třeba takto.
Nazveme ji např. ok.php.
<html><body>
<b><font
size="6">OK!</font></b> <p>Vaše zpráva
byla v pořádku odeslána :-)</p>
</body></html>
|
Vlastní odeslání e-mailu se nachází ve skriptu
sendmail.php. Skriptu je možné předat následující
parametry.
Povinné parametry:
$komu ... adresa
příjemce
$email ... adresa odesílatele
Nepovinné parametry:
$predmet ... předmět
e-mailu
$nexturl ... stránka s
výsledkem
$backurl ... adresa stránky pro
návrat
$html ... Y/N - odeslat ve formátu
HTML
$telo ... vlastní tělo e-mailu (podle formátu buď
prostý text nebo HTML kód)
Třída pro odeslání HTML e-mailu je definována v tomto includu
class.html.mime.mail.inc. Postup odeslání e-mailu ve formátu
HTML bude vypadat následovně. Funkce ToISO() slouží pouze pro
převod textu z kódování Win1250 na iso-8859-2. Tato funkce se
nachází v includu functions.php.
include("../inc/class.html.mime.mail.inc");
//
vytvoření objektu $mail $mail = new
html_mime_mail("X-Mailer: Html Mime Mail Class");
//
přidání kódu ve fromátu HTML do těla e-mailu $mail->add_html(ToISO($telo), "");
//
nastavení kódování e-mailu $mail->set_charset('iso-8859-2', TRUE);
//
sestavení e-mailu $mail->build_message();
// vlastní odeslání
emailu $mail->send($komu, $komu, $email, $email,
$predmet); |
Celý skript sendmail.php pro odeslání e-mailu pak bude
vypadat takto.
require("../inc/functions.php"); if ($html == "Y")
include("../inc/class.html.mime.mail.inc");
if ($html == "Y")
{ $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,
$predmet); } else { mail($komu,
ToISO($predmet), ToISO($telo), "From:
$email"); }
if ($nexturl != "")
{ echo "<script
language=\"JavaScript1.2\"><!--\n"; echo
"self.location=\"$nexturl\";\n"; echo "//
-->\n"; echo "</script>"; } else
{ echo("<font
size=\"6\"><b>Děkujeme!</b></font>"); echo("<p>Vaše
zpráva byla v pořádku odeslána.</p>"); }
|
Pomocí třídy pro odesílání HTML e-mailů lze vkládat do e-mailu i
obrázky a také přílohy. Podrobný popis možností (v angličtině)
naleznete u tohoto includu včetně příkladu použití.
Jak bude vypadat konečný výsledek se můžete podívat zde.
Kompletní zdrojové soubory příkladu - Download
Základní
include využité v příkladu - Download
Definice
třídy pro odeslání HTML e-mailu - Download