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

Mapa serveru | Administrace

Odeslání e-mailu ve formátu HTML

Michal Terč - Profil - 04.08.2001
V tomto článku si popíšeme způsob, jak odeslat pomocí PHP e-mail ve formátu HTML.

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="WebNews - 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&nbsp;&nbsp;
<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 - sendmail.zip (1 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 - (16742 zobrazení)
Redakce | | | ISSN 1213-9335 | © 2005 Developed by terc.cz